Il arrive souvent que les résultats d'une requête de sélection soient trop nombreux pour être affichés sur une seule page. On met alors en place un système de pagination pour permettre à l'utilisateur de naviguer dans les résultats. Ce système qui permet de passer de page en page peut être de différentes formes et offrir plus ou moins de facilités.
Les bases du traitements sont toujours les mêmes :
La fonction mysqli_num_rows() renvoie le nombre d'enregistrements sélectionnés par une requête SELECT.
MySQL facilite le travail de pagination avec la clause LIMIT qui permet non seulement de limiter le
nombre d'enregistrements retournés par une requête SELECT, mais aussi de renvoyer des
enregistrements à partir d'une certaine position dans un ensemble de
résultats.
SELECT * FROM table
ORDER BY col LIMIT position, nombre
Le paramètre position est facultatif. Si il est donné, les enregistrements situés avant cette position ne seront pas renvoyés. Le paramètre nombre détermine combien d'enregistrements seront renvoyés par la requête.
Si par exemple, la requête
SELECT
* FROM livres ORDER BY liTitre
sélectionne et renvoie tous les
enregistrements de la table,
la requête
SELECT
* FROM livres ORDER BY liTitre LIMIT 10
renverra uniquement
les 10 premiers enregistrements.
La requête
SELECT * FROM livres ORDER BY liTitre LIMIT
5, 10
renverra 10 enregistrements en commençant à la
position 5. Dans MySQL la position 5 correspond au sixième
enregistrement de l'ensemble des résultats : le premier
enregistrement est à la position 0 et non 1.
|
Position |
Contenu de la table |
SELECT * |
SELECT * |
SELECT * |
|
0 |
Enreg 1 |
+ |
+ |
|
|
1 |
Enreg 2 |
+ |
+ |
|
|
2 |
Enreg 3 |
+ |
+ |
+ |
|
3 |
Enreg 4 |
+ |
+ |
+ |
|
4 |
Enreg 5 |
+ |
+ |
+ |
|
5 |
Enreg 6 |
+ |
|
+ |
|
6 |
Enreg 7 |
+ |
|
|
|
7 |
Enreg 8 |
+ |
|
|
|
8 |
Enreg 9 |
+ |
|
|
|
9 |
Enreg 10 |
+ |
|
|
L'exemple suivant met en place une pagination par 5 enregistrements dans la liste de livres.
Reprenez l'exemple précédent de pagination de la liste des livres, mais en utilisant un formulaire pour permettre la navigation dans les pages.