// Pagination style : (< Préc. 1 2 3 4 5 6 7 ... 14 Suiv.>)
// (< Préc. 1 ... 4 5 6 7 8 9 10 ... 14 Suiv.>)
// (< Préc. 1 ... 8 9 10 11 12 13 14 Suiv.>)
Je sais qu'il existe plusieurs autres méthodes, mais étant un débutant et voulant essayer de créer moi-même ma pagination, je crois avoir réussi quelque chose d'assez bien et très simple d'utilisation.
Une seule variable à modifier (au besoin) dans le code.
Un exemple sur le site :
http://passioncharmes.com/colliers.php
Source / Exemple :
// Fichier : pagination.css
ul.pagination { margin: 6px 0; text-align: center; font-weight: bold;}
ul.pagination li {
background: #fff;
display: inline;
margin: 0;
padding: 0;
overflow: hidden;
}
ul.pagination li span, #lien_off {
line-height: 20px;
padding: 2px 8px;
border: 1px solid #C0A062;
}
#lien_off {
border: 1px solid #ccc;
color: #ccc;
}
ul.pagination a {
background: #fff;
line-height: 20px;
padding: 2px 8px;
text-decoration: none;
border: 1px solid #ccc;
}
ul.pagination a:hover, ul.pagination a:active, ul.pagination a:focus {
background: #C0A062;
color: #fff;
text-decoration: none;
}
// Fichier : pagination.php
<?php
// Pagination style : (< Préc. 1 2 3 4 5 6 7 ... 14 Suiv.>)
// (< Préc. 1 ... 4 5 6 7 8 9 10 ... 14 Suiv.>)
// (< Préc. 1 ... 8 9 10 11 12 13 14 Suiv.>)
//
// Au préalable, récupérer le numéro de la page indiquée dans l'adresse (.php?page=x)
// et définir le nombre total de pages ($nbDePages)
//
// Appeller ensuite la fonction par :
// Pagination($page, $nbDePages);
//
//
function Pagination($page, $nbDePages) {
$nb_AvAp = 3; // Nombre de pages à afficher avant et après la page courante (modifier au besoin)
echo '<div>';
echo '<ul class="pagination">';
// Activation du lien "< Préc." ou pas
if ($page > 1) {
echo '<li><a href="?page=' . ($page - 1) . '">< Préc.</a></li> ';
}
else {echo '<li><span id="lien_off">< Préc.</span></li> ';}
// Affichage des liens de page en ligne si (($nb_AvAp * 2) + 2) ou moins [sans le "1 ..." et le "... dernière_page"]
if ($nbDePages <= ($nb_AvAp * 2) + 2) {
for($i = 1; $i <= $nbDePages; $i++) {
if($i == $page) {echo '<li> <span>' . $i . '</span> </li>';}
else {echo '<li> <a href="?page=' . $i . '">' . $i . '</a> </li>';}
}
}
// Affichage des liens de page selon le format : 1 2 3 4 5 6 7 8 [lorsque la page en cours <= $nb_AvAp + 1, avec ($nb_AvAp * 2) + 1) liens max.]
elseif ($page <= $nb_AvAp + 1) {
for($i = 1; $i <= (($nb_AvAp * 2) + 1) && $i <= $nbDePages; $i++) {
if($i == $page) {echo '<li> <span>' . $i . '</span> </li>';}
else {echo '<li> <a href="?page=' . $i . '">' . $i . '</a> </li>';}
}
}
// Affichage des liens de page selon le format : 1 ... 2 3 4 5 6 7 8 [lorsque la page en cours = $nb_AvAp + 2 et la dernière page sera affichée précédée des "..."]
elseif ($page == $nb_AvAp + 2) {
echo '<li> <a href="?page=1">1</a> </li> ... ';
for($i = $page - $nb_AvAp; $i <= $page + $nb_AvAp; $i++) {
if($i == $page) {echo '<li> <span>' . $i . '</span> </li>';}
else {echo '<li> <a href="?page=' . $i . '">' . $i . '</a> </li>';}
}
}
// Affichage des liens de pages selon le format, par ex., : 1 ... 3 4 5 6 7 8 9 [lorsque la page en cours > 2 et la dernière page sera affichée précédée des "..."]
elseif ($page - $nb_AvAp > 2 && $page < $nbDePages - 2) {
echo '<li> <a href="?page=1">1</a> </li> ... ';
for($i = $page - $nb_AvAp; $i <= $page + $nb_AvAp && $i <= $nbDePages; $i++) {
if($i == $page) {echo '<li> <span>' . $i . '</span> </li>';}
else {echo '<li> <a href="?page=' . $i . '">' . $i . '</a> </li>';}
}
}
// Affichage des liens de page selon le format, par ex., : 1 ... 8 9 10 11 12 13 14 [lorsque la page en cours >= $nbDePages - 2, la dernière page affichée sans précéder des "..."]
elseif ($page >= $nbDePages - 2) {
echo '<li> <a href="?page=1">1</a> </li> ... ';
if ($nb_AvAp == 1 && $page == $nbDePages - 2) {$moins = 1;} else {$moins = 0;}
for($i = $nbDePages - ($nb_AvAp * 2) - $moins; $i <= $page + $nb_AvAp && $i <= $nbDePages; $i++) {
if($i == $page) {echo '<li> <span>' . $i . '</span> </li>';}
else {echo '<li> <a href="?page=' . $i . '">' . $i . '</a> </li>';}
}
}
else {echo '';}
// Affichage de la dernière, suivie des "...", si nécessaire
if ($page + $nb_AvAp < $nbDePages && $nbDePages > ($nb_AvAp * 2) + 2) {
echo ' ... <li> <a href="?page=' . $nbDePages . '">' . $nbDePages . '</a> </li>';
}
// Activation du lien "Suiv. >" ou pas
if ($page < $nbDePages) {
echo ' <li><a href="?page=' . ($page + 1) . '">Suiv. ></a></li>';
}
else {echo ' <li><span id="lien_off">Suiv. ></span></li>';}
echo '</ul>';
echo '</div>';
}
?>
Est que c'est pas possible de donner un exemple complet avec des requetes ?
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.