Pagination en php

Soyez le premier à donner votre avis sur cette source.

Snippet vu 10 630 fois - Téléchargée 19 fois

Contenu du snippet

Un code php pour afficher une pagination, avec l'appel en html pour le tester. Cela affiche juste les numéros de pages sur lesquels on clique, rien d'autre. Pas de code pour accéder à une base de données et sélectionner les enregistrements à afficher, ça se trouve partout. L'affichage de la pagination aussi, mais celui-là est vraiment simple. Pas de css de mise en forme.
Un copier-coller du code, en un seul fichier php.

Source / Exemple :


<?php

/*
$n : la page à afficher
$ntot : le nombre total de pages

  • /
function Pagination ($n, $ntot) { $url = $_SERVER['PHP_SELF']."?page="; $deb = 1; // l'étendue totale commence à la page 1 $N = array(); // tableau pour mettre les valeurs de pagination (début, -5, -2, -1, +1, +2, +5, fin) echo 'Page '.$n.' de '.$ntot.'<br />'; if ($ntot == 1) return; // s'il n'y a qu'une page on s'arrête if ($n > 1) $N['deb'] = $deb; // début = page 1 si on est pas sur la première page if ($n < $ntot) $N['fin'] = $ntot; // fin = dernière page si on n'y est pas déjà // Calcul : les pages précédentes if ($n-1 >= $deb) { $N['m1'] = $n-1; if ($n-2 >= $deb) { $N['m2'] = $n-2; if ($n-5 >= $deb) { $N['m5'] = $n-5; } } if (($N['m1'] == $N['deb']) || ($N['m2'] == $N['deb']) ||($N['m5'] == $N['deb'])) unset ($N['deb']); } // Calcul : les pages suivantes if ($n+1 <= $ntot) { $N['p1'] = $n+1; if ($n+2 <= $ntot) { $N['p2'] = $n+2; if ($n+5 <= $ntot) { $N['p5'] = $n+5; } } if (($N['p1'] == $N['fin']) || ($N['p2'] == $N['fin']) ||($N['p5'] == $N['fin'])) unset ($N['fin']); } // Liens vers les pages précédentes if (isset ( $N['deb'])) echo '<a title="Début : Page '.$N['deb'].'" href="'.$url.$N['deb'].'" class="pagenav">«&nbsp;</a>'; if (isset ( $N['m5'])) echo '&nbsp;&nbsp;<a title="Page '.$N['m5'].'" href="'.$url.$N['m5'].'" class="pagenav">'.$N['m5'].'&nbsp;</a>'; if (isset ( $N['m2'])) echo '&nbsp;&nbsp;<a title="Page '.$N['m2'].'" href="'.$url.$N['m2'].'" class="pagenav">'.$N['m2'].'&nbsp;</a>'; if (isset ( $N['m1'])) echo '<a title="Page '.$N['m1'].'" href="'.$url.$N['m1'].'" class="pagenav">'.$N['m1'].'&nbsp;</a>'; // La page actuelle echo $n."&nbsp"; // Liens vers les pages suivantes if (isset ( $N['p1'])) echo '<a title="Page '.$N['p1'].'" href="'.$url.$N['p1'].'" class="pagenav">'.$N['p1'].'&nbsp;</a>'; if (isset ( $N['p2'])) echo '<a title="Page '.$N['p2'].'" href="'.$url.$N['p2'].'" class="pagenav">'.$N['p2'].'&nbsp;</a>&nbsp;&nbsp;'; if (isset ( $N['p5'])) echo '<a title="Page '.$N['p5'].'" href="'.$url.$N['p5'].'" class="pagenav">'.$N['p5'].'&nbsp;</a>&nbsp;&nbsp;'; if (isset ( $N['fin'])) echo '<a title="Fin: Page '.$N['fin'].'" href="'.$url.$N['fin'].'" class="pagenav">»&nbsp;</a>'; } // Pagination() ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> </head> <body> <?php $pagetot=30; if (!isset($_GET['page']))Pagination (1, $pagetot); else Pagination ($_GET['page'], $pagetot); ?> </body> </html>

Conclusion :


J'espère que ça pourra servir.

A voir également

Ajouter un commentaire Commentaires
mettez l'application pour téléchargement svp
Messages postés
14788
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
1 mai 2021
155 > tsissam
Ici, on met des sources, les executables sont interdits dans les zips.
Messages postés
4
Date d'inscription
samedi 2 août 2003
Statut
Membre
Dernière intervention
3 février 2010

Bonjour

Il faut le mettre en forme. Pour que ce soit plus correct j'ai séparé la fonction php (je l'ai mise dans une classe) de la partie HTML et ajouté une css adaptée, du style de celle que l'on trouve sur la "pagination du style Digg".
Messages postés
3275
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
4
bonjour
ça a l'air bien ton code,
couplé avec une lecture des fichiers présents dans le répertoire avec le titre des pages en tooltip :)
Messages postés
4
Date d'inscription
samedi 2 août 2003
Statut
Membre
Dernière intervention
3 février 2010

Attention : les codes ◄ et ► aux lignes 39 et 49 sont en fait des flèches gauche et droite, mais elles ont été transformées dans le copier-coller. A vous d'en remettre, < et > ou un petit gif.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.