<?php
function pagination($url, $actualPage, $numberOfElements, $numberOfElementsPerPage = 10) {
$numberOfPageAroundActualPage = 2;
$numberOfPageAroundEdges = 1;
$url = (string)$url;
$actualPage = (int)$actualPage;
$numberOfElements = (int)$numberOfElements;
$numberOfElementsPerPage = (int)$numberOfElementsPerPage;
$numberOfPages = (int)ceil($numberOfElements / $numberOfElementsPerPage);
$shownPages = array();
if (($page - 1) > ($numberOfPageAroundActualPage + $numberOfPageAroundEdges + 1)) {
for ($i = 1; $i < ($numberOfPageAroundEdges + 1); ++$i)
$shownPages[] = $i;
$shownPages[] = 'separator';
for ($i = ($actualPage - $numberOfPageAroundActualPage); $i < $actualPage; ++$i)
$shownPages[] = $i;
}
else {
for ($i = 1; $i < $actualPage; ++$i)
$shownPages[] = $i;
}
$shownPages[] = $actualPage;
if (($numberOfPages - $actualPage) > ($numberOfPageAroundActualPage + $numberOfPageAroundEdges + 1)) {
for ($i = ($actualPage + 1); $i <= ($actualPage + $numberOfPageAroundActualPage); ++$i)
$shownPages[] = $i;
$shownPages[] = 'separator';
for ($i = ($numberOfPages - $numberOfPageAroundEdges + 1); $i <= $numberOfPages; ++$i)
$shownPages[] = $i;
}
else {
for ($i = ($actualPage + 1); $i <= $numberOfPages; ++$i)
$shownPages[] = $i;
}
$html = '<div class="pagination" role="navigation">';
$html .= '<div class="pagination-short">';
if (1 === $actualPage)
$html .= '<a href="'.$url.($actualPage-1).'" title="Aller à la page précédente"><i class="fa fa-angle-double-left"></i></a>';
else
$html .= '<span><i class="fa fa-angle-double-left"></i></span>';
if ($numberOfPages === $actualPage)
$html .= '<a href="'.$url.($actualPage+1).'" title="Aller à la page suivante"><i class="fa fa-angle-double-right"></i></a>';
else
$html .= '<span><i class="fa fa-angle-double-right"></i></span>';
$html .= '</div>';
$html .= '<div class="pagination-pages">';
foreach ($shownPages AS $page) {
if ('separator' === $page)
$html .= '<span>…</span>';
elseif ($actualPage === $page)
$html .= '<span>'.$page.'</span>';
else
$html .= '<a href="'.$url.$page.'" title="Aller à la page '.$page.'">'.$page.'</a>';
}
$html .= '</div>';
$html .= '<div class="pagination-details">';
$html .= 'Page '.$actualPage.' sur '.$numberOfPages.'. ';
$html .= 'Éléments '.(($actualPage - 1) * $numberOfElementsPerPage).' à '.($actualPage * $numberOfElementsPerPage).' sur '.$numberOfElements.' affichés.';
$html .= '</div>';
$html .= '</div>';
return $html;
}
echo pagination('index.php?p=2&page=', 1, 8, 10);
echo pagination('index.php?p=2&page=', 14, 315, 10);
echo pagination('index.php?p=2&page=', 5, 97, 10);
echo pagination('index.php?p=2&page=', 5, 88, 10);
preferences:
39.32 ms | 402 KiB | 5 Q