Dicton du 21 Septembre:
Le lendemain de Saint-Matthieu, tu sèmes je sème.

Télécharger
Noter:

Pagination simple avec points de suspension

Description

Ce système de pagination en PHP simplifié au maximum et très simple, il affiche des points de suspensions quand il y a beaucoup de pages.

Code source (PHP)

<?php
function pagination($NbrDeLien,$NbrDePages,$PageActuelle,$FormatUrlPage){
if($NbrDePages > 1){//si il y a plus d'une page, on affiche la pagination
echo "<div class='pagination'><b>Pages:</b><br />";
/*
* $NbrDeLien : (2 Minimum car sinon il y a plus rien qui s'affiche) si 2 (par exemple), il y aura 1 2 ... 15 16 17 ... 23 24 (La page actuelle étant 16), autre exemple avec 3 liens: 1 2 3 ... 14 15 16 17 18 ... 22 23 24 (La page actuelle étant 16)
* $NbrDePages : le total de vos pages
* $PageActuelle : la page actuelle que le visiteur parcours
* $FormatUrlPage="?page=[page]";//l'url de la page où il y a la pagination, exemple: http://www.c2script.com/ma-liste.php?page=[page] (où "[page]" sera remplacé automatiquement par les pages disponibles)
* si jamais vous utilisez htaccess pour réécrire vos pages, vous pouvez très bien faire comme suit: http://www.c2script.com/ma-liste/[page] ou même http://www.c2script.com/[page]/ma-liste
*/
for($page=1; $page<=$NbrDePages; $page++) {//on fait un boucle de toutes les pages
$href=str_replace("[page]",$page,$FormatUrlPage);//on transforme l'url
if($page <= $NbrDeLien) {//on affiche les premiers liens avant le premier "..."
echo "<a class='".($page==$PageActuelle?"page_pagination_actuelle":"page_pagination")."' href='{$href}'>{$page}</a>";
} elseif((($page-$NbrDeLien))>$PageActuelle OR $page == $PageActuelle OR (($page+$NbrDeLien))>$PageActuelle) {
if(($page-$NbrDeLien+1)>$PageActuelle AND $page>$PageActuelle){
echo (!isset($EtcFin) AND (($PageActuelle+$NbrDeLien)!=$NbrDePages) AND ($PageActuelle+$NbrDeLien*2)<=$NbrDePages)?'<span class="page_pagination_etc">...</span>':'';
$EtcFin = true;// on évite d'afficher plusieurs fois le "..." de la fin
echo ($page==$NbrDePages OR ($page+$NbrDeLien)>$NbrDePages)?"<a class='".($page==$PageActuelle?"page_pagination_actuelle":"page_pagination")."' href='{$href}'>{$page}</a>":"";
} else {
echo "<a class='".($page==$PageActuelle?"page_pagination_actuelle":"page_pagination")."' href='{$href}'>{$page}</a>";
$EtcDebut = false;
}
} elseif(!isset($EtcDebut)) {// si le "..." du début n'a pas été affiché, on l'affiche
$EtcDebut = true;// on évite d'afficher plusieurs fois le "..." du début
echo '<span class="page_pagination_etc">...</span>';
}
}
echo "</div>";
}
}
?>


Utilisation de la fonction pagination


Code source (PHP)

$ResultatsParPage = 4;//le nombre de résultats qui seront affichés par page
$req=mysqli_query($mysqli,"SELECT * FROM votre_table");
$nombreDePages=ceil(mysqli_num_rows($req)/$ResultatsParPage);
// si une page est demandée:
if(isset($_GET['page'])) {//GET page ou autre chose suivant ce que vous utilisez
// si get page n'est pas un chiffre:
if(!preg_match("#^[0-9]+$#",$_GET['page'])) {
$pageActuelle = 1;//si c'est pas un chiffre, on annule la demande de page et on met la première
} else {
$pageActuelle = intval($_GET['page']);//intval enlève le zéro de devant si il y en a un
if($pageActuelle > $nombreDePages)$pageActuelle = $nombreDePages;//si on demande une page supérieur au maxinimum de pages, on affiche la page maximale
}
} else {
$pageActuelle = 1; // La page actuelle est la n°1
}
$premiereEntree = ($pageActuelle-1)*$ResultatsParPage; // On calcul la première entrée à lire
$req=mysqli_query($mysqli,"SELECT * FROM votre_table ORDER BY votre_champ DESC LIMIT ".($premiereEntree<0?0:$premiereEntree).", ".$ResultatsParPage);
$NbrDePages=mysqli_num_rows($req);

//on affiche les résultats:
while($info=mysqli_fetch_assoc($req)){
echo $info['votre_champ'];//exemple
}

//on affiche la pagination
pagination(2,$nombreDePages,$pageActuelle,"?page=[page]");


Vous pouvez styliser la pagination avec les classes CSS suivantes:

Code source (CSS)

div.pagination{background:#F0F0F0;padding:5px;}
a.page_pagination_actuelle{padding:3px;margin:2px;background:#D2FFC4; border:1px solid #C8E0CA;}
a.page_pagination{padding:3px;margin:2px;background:#E3FFE5; border:1px solid #C8E0CA;}
span.page_pagination_etc{padding:3px;margin:2px;}

Commentaires

Merci beaucoup pour ce script très pratique !

Ajouter un commentaire

Pseudo/Nom *
Email *
Message *
La balise [code]Votre code...[/code] peut être utilisée

Captcha * 6 × = trente

Les champs marqués d'un * sont obligatoires.

Retour à la liste des scripts

Flag Counter