Dicton du 16 Janvier:
Prépare pour Saint-Marcel, tes graines nouvelles.

Télécharger
Noter:

Ajouté le 23/02/2015
Visionné 2826 fois

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


ATTENTION! Ce formulaire est exclusivement réservé aux commentaires
Pour toutes demandes d'aide, veuillez ajouter votre demande sur le forum svp

Captcha * + 1 = huit

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

Retour à la liste des scripts

Flag Counter