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]:
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
Voici le résultat obtenu:
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]:
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
J'obtiens:
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