Trier et afficher selon année de naissance
Résolu
t671
Messages postés
1475
Date d'inscription
Statut
Membre
Dernière intervention
-
t671 Messages postés 1475 Date d'inscription Statut Membre Dernière intervention -
t671 Messages postés 1475 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 :
J'ai essayé :
mais ça fonctionne pas !
Merci.
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.
12 réponses
-
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.
-
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'; -
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 ............... -
LIKE '%$variable'
LIKE '%1985' : sort toutes les chaînes terminant par '1985'.ORDER BY $variable ASC
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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 ! -
Oui mais l'année n'est pas obligatoirement 1885 !!! 1885 est un exemple, comme j'auraisd pu écrire 1750 ou 1963 !
-
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
-
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'].'"
-
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";
-
Là, tu as mis le % devant
".$row10['num_indiv']."
qui n'a rien à voir avec date_naissance. Ca peut pas fonctionner ..... -
$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 -
J'ai trouvé !
$select7 = 'SELECT * FROM individus WHERE num_pere = "'.$row6['num_indiv'].'" ORDER BY RIGHT(date_naissance,4)';
A +