Jump to content
Sign in to follow this  
zedark

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

Rate this topic

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 ?

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...