Bonjour,
J'ai créé il y a quelques mois un petit système me permettant de gérer la base de données des sites Internet réalisés par la société. Celui-ci à l'avantage d'être plus "accessible" que PhpMyAdmin, et donc directement utilisable par nos clients.
Lors de l'affichage du contenu d'une table, il y a un bouton à gauche de chaque ligne permettant la sélection et l'affichage d'un formulaire de modification. Ce bouton fait référence à la clé primaire de la table.
Je me suis rendu compte qu'il y avait parfois des soucis de sélection, sans pour autant trouver une solution. Sans rentrer dans les détails, voici ce que j'ai pu remarquer.
Si j'exécute la commande SQL suivante [news.id = clé primaire]:
Voici le résultat obtenu:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT news.id, [...], news.pdf FROM news INNER JOIN categories ON news.categorie_id = categories.id ORDER BY news.pdf ASC LIMIT 0 , 5
5, [...], file1.pdf
6, [...], file2.pdf
7, [...], file3.pdf
8, [...], file4.pdf
9, [...], file5.pdf
Afin d'afficher le bouton de modification, j'utilise une autre requête mais ciblée qui reprend exactement les mêmes données, mais le résultat diffère.
Si j'exécute la commande SQL suivante [news.id = clé primaire]:
J'obtiens:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT news.id, [...], news.pdf FROM news INNER JOIN categories ON news.categorie_id = categories.id ORDER BY news.pdf ASC LIMIT 1 , 1
8, [...], file4.pdf
Pourtant, je devrais avoir "6, [...], pdf2.pdf".
En changeant la limit en "2, 1", j'obtiens "9, [...], pdf5.pdf"
La seule différence dans les deux requêtes sont les données des limites.
Auriez-vous une idée?
En vous remerciant![]()
Partager