par
spirou » 31 mars 2006, 22:08
Bonsoir,
J'ai un petit problème avec une requête sql que je n'arrive pas à résoudre.
$sql = "SELECT * FROM table WHERE id BETWEEN $selection_id_min AND $selection_id_max ORDER BY id DESC";
Avec cette requête, j'obtiens bien un affichage par ordre décroissant mais seulement sur chaque page et non sur la table entière.
C'est à dire, que par exemple avec 10 entrées dans ma table, sur mes 2 premières pages, j'obtiens :
page 1 : 5 4 3 2 1
et
page 2 : 10 9 8 7 6
Alors que je voudrais le contraire.
J'ai donc essayé avec limit, mais ça bug et je sais pas pourquoi
$sql = "SELECT * FROM news ORDER BY id DESC LIMIT $selection_id_min, $selection_id_max";
Avec 17 entrées et 5 id par page, j'obtiens :
page = 1
selection_id_min = 1
selection_id_max = 5
16 15 14 13 12 => Problème, l'id max est 17 et non 16
page = 2
selection_id_min = 6
selection_id_max = 10
11 10 9 8 7 6 5 4 3 2 => Je ne comprends pas...
page = 3
selection_id_min = 11
selection_id_max = 15
6 5 4 3 2 1 => Bizarre...
page = 4
selection_id_min = 16
selection_id_max = 17
1 => encore plus bizarre.......
Vu qu'avec le between, je n'ai pas ce problème, y'a t-il une façon de faire ceci avec, c'est à dire d'abord l'ordre décroissant de la table et ensuite le between ?