Pagination en php

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

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.