Tu as la base à toi d'adapter :) ce n'est pas over complexe :)
Bonjour Grafikart !
J'ai suivi il y a longtemps le tuto en ligne sur la pagination en php, mais il serait intéressant de voir la version avancée de la pagination:
La pagination actuelle prend en compte tous les sujets à montrer, c'est à dire, créer autant de puces que de pages.
Il faudrait, limiter une fenêtre d'ouverture pour la pagination, démontrer comment procéder, en exemple:
Page active: 6ème page, fenêtre d'ouverture de 5:
<< ... 1 - 2 - 3 - 4 - 5 ... > >> Page 6 sur 19.
Non ? :)
5 réponses
Je comprends bien mais je tatonne (normal quoi). J'ai créé une variable pour cette fenêtre, et en fonction du nombre de page, et de pages à afficher/page, ca déroule.. mais j'ai pas tout.
J'vais de toutes façons m'y plonger, il faut que j'arrive à le mettre en place sur mon site :)
Bonjour,
j'ai trouvé ça: http://flaviusmatis.github.io/simplePagination.js/
je vais essayer :)
Alors, je me suis penché sur la pagination, et voilà ce que j'ai pondu:
Avé les variables:
/* définit le nombre d'articles */
$nbArt = $datacount'nbArt'];
/* définit le nombre de news par page */
$perPage = 2; //Nombre d'articles par pages | Vous pouvez changer cette valeur selon votre besoin
$nbPageLimit = 4; // Nombre de pages limites à afficher | Vous pouvez changer cette valeur selon votre besoin
$nbPage = ceil($nbArt/$perPage);
$pOffset = 2; // Nombre de pages à afficher avant les switches.
$lastPage = ((int)(($nbArt + $perPage - 1) / $perPage )); // calcul de la dernière page.
le code, ATCHA !
echo '
<div class="pagination pagination-centered">
<ul>';
// Affichage saut à la 1ère page
if($cPage > $pOffset){
echo '<li><a href="archives.php?p=1">«</a></li>';
}else{
echo '<li class="disabled"><span>«</span></li>';
}
// Affichage des deux 1ères pages - pages permanentes
for($i=1;$i<=$pOffset;$i++){
echo '<li><a href="archives.php?p='.$i.'">'.$i.'</a></li>';
}
// Affichage de ... si page courante > page offset
if($cPage > $pOffset){
echo '<li class="disabled"><a href="#">...</a></li>';
}
//
if($cPage < ($pOffset+$nbPageLimit)){
for($i=$pOffset+1;$i<=$cPage+(int)($nbPageLimit/2);$i++){
if($i==$cPage){
// affichage page active
echo '<li class="active"><a href="#">'.$i.'</a></li>';
}else{
// affichage autres pages
echo '<li><a href="archives.php?p='.$i.'">'.$i.'</a></li>';
}
}
}
if($cPage >= ($pOffset+$nbPageLimit) && $cPage < ($lastPage-$nbPageLimit)){
for($i=$cPage-(int)($nbPageLimit/2);$i<=$cPage+(int)($nbPageLimit/2);$i++){
if($i==$cPage){
// affichage page active
echo '<li class="active"><a href="#">'.$i.'</a></li>';
}else{
// affichage autres pages
echo '<li><a href="archives.php?p='.$i.'">'.$i.'</a></li>';
}
}
}
if($cPage >= ($lastPage-$nbPageLimit)){
for($i=$cPage-((int)($nbPageLimit/2));$i<=$lastPage-$pOffset;$i++){
if($i==$cPage){
// affichage page active
echo '<li class="active"><a href="#">'.$i.'</a></li>';
}else{
// affichage autres pages
echo '<li><a href="archives.php?p='.$i.'">'.$i.'</a></li>';
}
}
}
// Affichage de ... si page courante < page fin
if($cPage < ($lastPage-$pOffset)){
echo '<li class="disabled"><a href="#">...</a></li>';
}
// Affichage des deux dernières pages - pages permantentes
for($i=($lastPage-$pOffset+1);$i<=$lastPage;$i++){
echo '<li><a href="archives.php?p='.$i.'">'.$i.'</a></li>';
}
// Affichage saut à la dernière page
if($cPage < $lastPage-$pOffset){
echo '<li><a href="archives.php?p='.$lastPage.'">»</a></li>';
}else{
echo '<li class="disabled"><span>»</span></li>';
}
echo '
<li class="disabled"><a href="#"><span>page <b>'.$cPage.'</b>/'.$lastPage.'</span></a></li>
</ul>
</div>
je ne sais pas si c'est propre, mais à a le mérite de fonctionner :) Et compatible avec le tuto de pagination de Grafikart.
Merci bien pour ce partage !
Je n'ai pas tout regardé en détails, mais plus "subtil" que ma proposition précédente :)