LIMIT et ordre de tri

Eléphant du PHP | 294 Messages

09 sept. 2009, 22:47

Bonjour
pour réaliser un système de navigation dans une page d'article( article suivant, article precedent), j'ulise ces requetes
$query_rs_next = "SELECT articles.reference,  articles.IDarticle  FROM articles WHERE articles.reference > '".$row_rsarticles['reference']."' LIMIT 1";

$query_rs_previous = "SELECT articles.reference, articles.IDarticle FROM articles WHERE articles.reference < '".$row_rsarticles['reference']."' LIMIT 1";
La première fonctionne sans problème, la seconde me ramène toujours à la première entrée et non pas à la precedente
'reference' est du type ref1001, ref1002...
bref l'ordonnement est bien capté dans un sens pas dans l'autre.

Si vous savez pourquoi...merci

Eléphanteau du PHP | 27 Messages

09 sept. 2009, 22:57

Si tu enlève le LIMIT, ta seconde requête te renvoie TOUS les enregistrements dont la ref précèdent l'enregistrement courant.
Avec ton LIMIT 1, elle ne t'en renvoie que le premier enregistrement correspondant à la requête, en l'occurrence, l'enregistrement ayant la ref la plus petite.

Essaye de rajouter un ORDER BY.

Résultat:
$query_rs_previous = "SELECT articles.reference, articles.IDarticle FROM articles WHERE articles.reference < '".$row_rsarticles['reference']."' ORDER BY articles.reference DESC LIMIT 1";
De cette manière, la requête recherchera tous les résultats dont la ref est inférieure (comme précédemment) mais cette fois triés en sens inverse, c'est à dire, l'enregistrement aayant la référence la plus proche de ton enregistrement actuel en premier (et c'est donc celui-ci que ton LIMIT 1 te renverra)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

09 sept. 2009, 23:05

Modération :
Merci d'utiliser un titre clair et qui correspond bien à ta demande.
Les titres contenant "HELP !", "Aidez-moi", "J'ai un problème", "Ça marche pas",...
n'apportent rien à la compréhension de ta demande.

Par ailleurs, nous savons déjà par ton message que tu as besoin d'aide.

Tu peux corriger ton titre en éditant ton premier message.

Merci de prendre le temps de lire les règlements.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 294 Messages

09 sept. 2009, 23:15

Super c'était ça, à présent ça fonctionne.

merci

Eléphant du PHP | 294 Messages

09 sept. 2009, 23:16

Et désolé pour le titre, je connais le règlement je me suis emporté. merci