Aller au contenu
zedark

(pdo mysql) tri non conservé en modifiant une clause limit

Noter ce sujet :

Recommended Posts

Bonjour :)

J'ai une page php affichant un tableau de résultats paginés d'une recherche multicritères, triable par colonne.

En cliquant su un lien de résultat, j'ouvre une page affichant les détails d'un seul résultat, cette page contenant également une pagination, mais cette fois-ci de 1 en 1, pour naviguer dans les résultats de la même recherche. Cette 2è page fait donc exactement la même requête SELECT, hormis la clause LIMIT pour ne renvoyer qu'un seul élément.

À ma grande stupéfaction j'ai constaté que si je triais le résultat sur une colonne contenant des valeurs vides ("", pas NULL), pour toutes les valeurs vides le tri était différent pour la première page et la page des détails d'un résultat... ce qui fait qu'en cliquant sur un résultat de la première page, je tombe sur les détails d'un autre résultat : c'est plutôt gênant.

Je teste les requêtes dans phpMyAdmin -> le tri est conservé, aucun problème.

Je pense donc à un problème de PDO (car mes connections se font via PDO dans les pages, mais pas dans phpMyAdmin), ou peut-être une histoire de cache mysql, mais je n'ai aucune connaissance dans le domaine.

J'ai fini par placer des index sur les champs utilisés pour le tri, et là miracle ça marche (j'aurai dû les indexer depuis longtemps de toute façon).

Mais bon j'ai résolu mon problème sans le comprendre, et ce n'est pas comme ça que l'on progresse.

Votre avis ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Hello,

pour moi PDO ne s'amuse pas à remélanger les données de son coté, pour le plaisir. Au pire tu peux lui faire faire du distinct ou group by, mais dans tous les cas ce sera parce que ton script l'a demandé.

Bref, vérifie déjà tes 2 requêtes ainsi que tes traitements du résultat en question.

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci,

100% d'accord, j'ai fais une grossière erreur de diagnostic... PDO n'est pas en cause, je suis donc HS, désolé.

Ma solution a été de rajouter un second tri sur une colonne qui est unique et a toujours des valeurs.

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

×