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.

exemple de pagination
exemple de pagination
exemple de pagination

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 *
FROM table

SELECT *
FROM table
LIMIT 5

SELECT *
FROM table
LIMIT 2, 4

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.

Exemple : pagination de résultats

Pagination de résultats

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.

pagination de la liste des livres

Une solution possible

Exercice : Exercice : pagination avec formulaire