Bonjour à tous. J’ai une petite question :
Je cherche à sélectionner dans une base les lignes dans une certaine plage.
Par exemple, une base constituée de 100 lignes. Si je veux prendre les 30 dernieres, c’est facile, j’ai juste à faire un SELECT * FROM ma_base ORDER BY DESC LIMIT 30. Pour les 30 premières c’est facile aussi. Mais je bloque pour sélectionner celles situés entre 30 et 60 par exemple.
Au départ, je comptais me servir de l’index (qui s’auto-incrémente) en disant, SELECT * FROM ma_base WHERE ‘index’>30 par exemple. Mais ça pose problème si je supprime des lignes.
En fait, je voudrais que quand j’arrive sur la première page de mon site, les 30 premiers messages soit affichés (facile !). Mais au passage de la seconde page, comment faire? Parce que si je dis de partir de l’index 31 avec une LIMIT de 30, ce sera peut-être faux car avant l’index 31, rien ne nous dit qu’il y a effectivement 30 lignes. Si les lignes 25 à 28 de la base sont supprimées, pour la première page, les lignes jusqu’à 33 seront lues. Et pour la deuxième page, si je reprend à 31, il y aura des doublons.
J’espère que certains auront compris quelque chose car je sens bien que je ne suis pas très clair.
Merci d’avance.
Edité le 07/12/2008 à 13:06