Trier et afficher selon année de naissance

Résolu
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   -  
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'affiche des individus issus de ma base, mais je souhaiterais les afficher par ordre croissant des années de naissance. Le champs date de naissance se termine sur l'année de naissance à 4 chiffres.
Ma requête actuelle :
$select3 = 'SELECT * FROM individus WHERE num_pere LIKE "'.$row2['num_indiv'].'" '; 
$result3 = mysql_query($select3,$link) or die ('Erreur : '.mysql_error() );
while ($row3 = mysql_fetch_array($result3)) 
{

J'ai essayé :
$select3 = 'SELECT * FROM individus WHERE num_pere LIKE "'.$row2['num_indiv'].'" ORDER BY MAX(RIGHT(date_naissance, 4))';

mais ça fonctionne pas !

Merci.
A voir également:

12 réponses

tryan44 Messages postés 1288 Date d'inscription   Statut Membre Dernière intervention   220
 
Je ne comprend pas... j'ai bien comprit que le champ année peut avoir différents "format" mais ils se terminent tous sur l'année de naissance à 4 chiffres.
La requête contenant LIKE '%1985' est censé sortir tout les résultats contenant '1985' en fin de chaîne. Cela cumulé au trie d'affichage ORDER BY $variable ASC devrait normalement donner le résultat attendu.
1
magicshark Messages postés 402 Date d'inscription   Statut Membre Dernière intervention   13
 
honte à moi je ne sais plus si c'est "asc" ou "desc" qu'il te faut

$select3 = 'SELECT * FROM individus WHERE num_pere LIKE "'.$row2['num_indiv'].'" ORDER BY desc date_naissance';
0
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   11
 
Merci magicshark. Mais je veux sélectionner les 4 derniers chiffres de la date de naissance pour faire un tri dessus car la date peut avoir différents formats :
23 NOV 1885
1885
Avant 1885
Vers 1885
Entre 1885 et 1889 ...............
0
tryan44 Messages postés 1288 Date d'inscription   Statut Membre Dernière intervention   220
 
 LIKE '%$variable'

LIKE '%1985' : sort toutes les chaînes terminant par '1985'.
ORDER BY $variable ASC
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   11
 
C'est pas tout à fait que je veux, tryan44.
C'est afficher par ordre croissant des années de naissance. A savoir que le champs année de naissance fini par l'année, soit 4 caractères. Et il peut être de différent format :
1885
Vers 1885
25 DEC 1885
Entre 1880 et 1885 ................

J'ai testé avec SUBSTR :
$select11 = 'SELECT * FROM individus WHERE num_pere LIKE "'.$row10['num_indiv'].'" ORDER BY substr(date_naissance, -4, 4) ASC';

mais ça fonctionne pas !
0
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   11
 
Oui mais l'année n'est pas obligatoirement 1885 !!! 1885 est un exemple, comme j'auraisd pu écrire 1750 ou 1963 !
0
tryan44 Messages postés 1288 Date d'inscription   Statut Membre Dernière intervention   220
 
Je m'en doute bien ^^ mais dans mon exemple 1985 doit être remplacé par la variable qui permet d'effectuer la recherche comme par exemple "$date" .. tout dépend comment vous faites votre recherche!

Imaginons une liste déroulante contenant les années dont le nom (name) serait "date" :
LIKE '%$_POST['date']' ORDER BY ... ASC

0
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   11
 
Je ne comprend pas ce que tu essayes de me dire.
Complète ma requête afin que j'affiche les enregistrements triés par date_naissance, et je teste :
$select11 = 'SELECT * FROM individus WHERE num_pere LIKE "'.$row10['num_indiv'].'"
0
tryan44 Messages postés 1288 Date d'inscription   Statut Membre Dernière intervention   220
 
Si je ne me plante pas ça devrait donner :
$select11 = "SELECT * FROM individus WHERE num_pere LIKE '%'".$row10['num_indiv']."'' ORDER BY date_naissance ASC"; 

0
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   11
 
Là, tu as mis le % devant
".$row10['num_indiv']."
qui n'a rien à voir avec date_naissance. Ca peut pas fonctionner .....
0
tryan44 Messages postés 1288 Date d'inscription   Statut Membre Dernière intervention   220
 
$row10['num_indiv'] ne correspond pas à la date recherché?

Voici comment je perçoit votre requête :

SELECT * FROM table visé WHERE date LIKE '%date recherché' ORDER BY date de naissance ASC

Qui correspond en version traduit :

Sélectionne tout dans la table table visé dont le champ date se termine par date recherché avec un trie sur la table date de naissance. par ordre croissant
0
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   11
 
J'ai trouvé !
$select7 = 'SELECT * FROM individus WHERE num_pere = "'.$row6['num_indiv'].'" ORDER BY RIGHT(date_naissance,4)';


A +
0