Nous allons voir comment effectuer un système de pagination sur vos données (galerie d'images, articles, liste de commentaires, etc) à partir d'une base de données et d'une classe PHP.
Etape 1 : Création de la table
Bon pour ce tuto il nous faut de la matière, voici une table que vous pouvez reprendre, qui contient une vingtaine de lignes, assez pour travailler :)
Etape 2 : Notre classe Pagination
Pour ce tuto, nous allons utiliser une classe Pagination, qui n'est rien d'autre que 2 méthodes statiques. (Le fonctionnement est donc similaire aux fonctions). Voici son code:
Ne vous embettez pas à rentrer dans les détails de ce code, sachez juste qu'elle renvoie une div html, contenant la pagination à afficher. Pour la faire fonctionner, nous avons besoin de 5 paramètres:
- $chemin qui est le nom de votre url (par exemple "maPage.php")
- $nomGet qui sera le nom de votre variable passée en paramètre dans votre url (ex: index.php?numeroPage=2 renverra la 2ème page)
- $total qui est le nombre total de pages
- $courante qui est le numéro de la page sur laquelle on se trouve
- $affichage qui équivaut au nombre d'éléments minimum à afficher de chaque côté de la page courante (ex: si on est à 3, cela donnera ceci: ...5 6 7 8 9 10 11...)
Etape 3 : Notre fichier à paginer
Vous l'aurez compris, il va falloir dans notre fichier PHP ou l'on veut afficher nos éléments connaître certaines valeurs énoncés précédemment comme le nombre total de pages. Voici la démarche à effectuer:
- Dans un premier temps nous allons compter le nombre d'éléments dans notre table (on utilisera pour ceci le mot clé COUNT(*) en SQL.
- Ensuite nous allons déduire le nombre total de pages en divisant le nombre d'items par le nombre d'items par page (j'ai choisi d'en afficher 2 par pages).
- Nous allons par la suite, identifier une variable qui correspondra au numéro de la page courante vu par l'utilisateur (il correspondra à $_GET['idPage'] et si ce dernier est nul, nous le mettrons par défault à 1)
- Nous exécuterons la requête qui permettra d'afficher les élements voulus en utilisant la clause LIMIT de SQL. La première valeur de LIMIT correspond à la pageCourante*le nombre d'items par page - le nombre d'items par page. La deuxième valeur correspond au nombre d'élements à afficher (ici cela correspond au nombre d'items par page).
- Pour finir nous afficherons le résultat de notre requête et éxécuterons notre fonction de pagination (tout en ayant au préalable inclus notre classe Pagination)
Voici le contenu de notre fichier que j'ai apellé très instinctivement: "index.php":
La partie PHP est dorénavant terminée, il ne reste plus qu'à styliser tout ça en CSS.
Etape 4 : La feuille de style CSS
Vous pouvez maintenant égayer un petit peu la pagination avec du CSS, voici un exemple de CSS sympa qui lui irait bien:
On retrouve dans ce tutoriel un contenu complémentaire au tutoriel vidéo que l'on retrouve sur le blog de GrafikArt.
Intéressant.