3v4l.org

run code in 150+ php & hhvm versions
Bugs & Features
<?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); $firstShownElement = ((($actualPage - 1) * $numberOfElementsPerPage) + 1); $lastShownElement = (($actualPage * $numberOfElementsPerPage) > $numberOfElements) ? $numberOfElements : ($actualPage * $numberOfElementsPerPage); $shownPages = array(); if (($actualPage - 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 .= '<span><i class="fa fa-angle-double-left"></i></span> '; else $html .= '<a href="'.$url.($actualPage-1).'" title="Aller à la page précédente"><i class="fa fa-angle-double-left"></i></a> '; if ($numberOfPages === $actualPage) $html .= '<span><i class="fa fa-angle-double-right"></i></span> '; else $html .= '<a href="'.$url.($actualPage+1).'" title="Aller à la page suivante"><i class="fa fa-angle-double-right"></i></a> '; $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 '.$firstShownElement.' à '.$lastShownElement.' sur '.$numberOfElements.' affichés.'; $html .= '</div>'; $html .= '</div>'; return "\n".$html."\n"; } for ($i = 1; $i <= 12; ++$i) echo pagination('index.php?p=2&page=', $i, 113, 10);
Output for 4.3.0 - 7.1.0
<div class="pagination" role="navigation"><div class="pagination-short"><span><i class="fa fa-angle-double-left"></i></span> <a href="index.php?p=2&page=2" title="Aller à la page suivante"><i class="fa fa-angle-double-right"></i></a> </div><div class="pagination-pages"><span>1</span> <a href="index.php?p=2&page=2" title="Aller à la page 2">2</a> <a href="index.php?p=2&page=3" title="Aller à la page 3">3</a> <span>…</span> <a href="index.php?p=2&page=12" title="Aller à la page 12">12</a> </div><div class="pagination-details">Page 1 sur 12. Éléments 1 à 10 sur 113 affichés.</div></div> <div class="pagination" role="navigation"><div class="pagination-short"><a href="index.php?p=2&page=1" title="Aller à la page précédente"><i class="fa fa-angle-double-left"></i></a> <a href="index.php?p=2&page=3" title="Aller à la page suivante"><i class="fa fa-angle-double-right"></i></a> </div><div class="pagination-pages"><a href="index.php?p=2&page=1" title="Aller à la page 1">1</a> <span>2</span> <a href="index.php?p=2&page=3" title="Aller à la page 3">3</a> <a href="index.php?p=2&page=4" title="Aller à la page 4">4</a> <span>…</span> <a href="index.php?p=2&page=12" title="Aller à la page 12">12</a> </div><div class="pagination-details">Page 2 sur 12. Éléments 11 à 20 sur 113 affichés.</div></div> <div class="pagination" role="navigation"><div class="pagination-short"><a href="index.php?p=2&page=2" title="Aller à la page précédente"><i class="fa fa-angle-double-left"></i></a> <a href="index.php?p=2&page=4" title="Aller à la page suivante"><i class="fa fa-angle-double-right"></i></a> </div><div class="pagination-pages"><a href="index.php?p=2&page=1" title="Aller à la page 1">1</a> <a href="index.php?p=2&page=2" title="Aller à la page 2">2</a> <span>3</span> <a href="index.php?p=2&page=4" title="Aller à la page 4">4</a> <a href="index.php?p=2&page=5" title="Aller à la page 5">5</a> <span>…</span> <a href="index.php?p=2&page=12" title="Aller à la page 12">12</a> </div><div class="pagination-details">Page 3 sur 12. Éléments 21 à 30 sur 113 affichés.</div></div> <div class="pagination" role="navigation"><div class="pagination-short"><a href="index.php?p=2&page=3" title="Aller à la page précédente"><i class="fa fa-angle-double-left"></i></a> <a href="index.php?p=2&page=5" title="Aller à la page suivante"><i class="fa fa-angle-double-right"></i></a> </div><div class="pagination-pages"><a href="index.php?p=2&page=1" title="Aller à la page 1">1</a> <a href="index.php?p=2&page=2" title="Aller à la page 2">2</a> <a href="index.php?p=2&page=3" title="Aller à la page 3">3</a> <span>4</span> <a href="index.php?p=2&page=5" title="Aller à la page 5">5</a> <a href="index.php?p=2&page=6" title="Aller à la page 6">6</a> <span>…</span> <a href="index.php?p=2&page=12" title="Aller à la page 12">12</a> </div><div class="pagination-details">Page 4 sur 12. Éléments 31 à 40 sur 113 affichés.</div></div> <div class="pagination" role="navigation"><div class="pagination-short"><a href="index.php?p=2&page=4" title="Aller à la page précédente"><i class="fa fa-angle-double-left"></i></a> <a href="index.php?p=2&page=6" title="Aller à la page suivante"><i class="fa fa-angle-double-right"></i></a> </div><div class="pagination-pages"><a href="index.php?p=2&page=1" title="Aller à la page 1">1</a> <a href="index.php?p=2&page=2" title="Aller à la page 2">2</a> <a href="index.php?p=2&page=3" title="Aller à la page 3">3</a> <a href="index.php?p=2&page=4" title="Aller à la page 4">4</a> <span>5</span> <a href="index.php?p=2&page=6" title="Aller à la page 6">6</a> <a href="index.php?p=2&page=7" title="Aller à la page 7">7</a> <span>…</span> <a href="index.php?p=2&page=12" title="Aller à la page 12">12</a> </div><div class="pagination-details">Page 5 sur 12. Éléments 41 à 50 sur 113 affichés.</div></div> <div class="pagination" role="navigation"><div class="pagination-short"><a href="index.php?p=2&page=5" title="Aller à la page précédente"><i class="fa fa-angle-double-left"></i></a> <a href="index.php?p=2&page=7" title="Aller à la page suivante"><i class="fa fa-angle-double-right"></i></a> </div><div class="pagination-pages"><a href="index.php?p=2&page=1" title="Aller à la page 1">1</a> <span>…</span> <a href="index.php?p=2&page=4" title="Aller à la page 4">4</a> <a href="index.php?p=2&page=5" title="Aller à la page 5">5</a> <span>6</span> <a href="index.php?p=2&page=7" title="Aller à la page 7">7</a> <a href="index.php?p=2&page=8" title="Aller à la page 8">8</a> <span>…</span> <a href="index.php?p=2&page=12" title="Aller à la page 12">12</a> </div><div class="pagination-details">Page 6 sur 12. Éléments 51 à 60 sur 113 affichés.</div></div> <div class="pagination" role="navigation"><div class="pagination-short"><a href="index.php?p=2&page=6" title="Aller à la page précédente"><i class="fa fa-angle-double-left"></i></a> <a href="index.php?p=2&page=8" title="Aller à la page suivante"><i class="fa fa-angle-double-right"></i></a> </div><div class="pagination-pages"><a href="index.php?p=2&page=1" title="Aller à la page 1">1</a> <span>…</span> <a href="index.php?p=2&page=5" title="Aller à la page 5">5</a> <a href="index.php?p=2&page=6" title="Aller à la page 6">6</a> <span>7</span> <a href="index.php?p=2&page=8" title="Aller à la page 8">8</a> <a href="index.php?p=2&page=9" title="Aller à la page 9">9</a> <span>…</span> <a href="index.php?p=2&page=12" title="Aller à la page 12">12</a> </div><div class="pagination-details">Page 7 sur 12. Éléments 61 à 70 sur 113 affichés.</div></div> <div class="pagination" role="navigation"><div class="pagination-short"><a href="index.php?p=2&page=7" title="Aller à la page précédente"><i class="fa fa-angle-double-left"></i></a> <a href="index.php?p=2&page=9" title="Aller à la page suivante"><i class="fa fa-angle-double-right"></i></a> </div><div class="pagination-pages"><a href="index.php?p=2&page=1" title="Aller à la page 1">1</a> <span>…</span> <a href="index.php?p=2&page=6" title="Aller à la page 6">6</a> <a href="index.php?p=2&page=7" title="Aller à la page 7">7</a> <span>8</span> <a href="index.php?p=2&page=9" title="Aller à la page 9">9</a> <a href="index.php?p=2&page=10" title="Aller à la page 10">10</a> <a href="index.php?p=2&page=11" title="Aller à la page 11">11</a> <a href="index.php?p=2&page=12" title="Aller à la page 12">12</a> </div><div class="pagination-details">Page 8 sur 12. Éléments 71 à 80 sur 113 affichés.</div></div> <div class="pagination" role="navigation"><div class="pagination-short"><a href="index.php?p=2&page=8" title="Aller à la page précédente"><i class="fa fa-angle-double-left"></i></a> <a href="index.php?p=2&page=10" title="Aller à la page suivante"><i class="fa fa-angle-double-right"></i></a> </div><div class="pagination-pages"><a href="index.php?p=2&page=1" title="Aller à la page 1">1</a> <span>…</span> <a href="index.php?p=2&page=7" title="Aller à la page 7">7</a> <a href="index.php?p=2&page=8" title="Aller à la page 8">8</a> <span>9</span> <a href="index.php?p=2&page=10" title="Aller à la page 10">10</a> <a href="index.php?p=2&page=11" title="Aller à la page 11">11</a> <a href="index.php?p=2&page=12" title="Aller à la page 12">12</a> </div><div class="pagination-details">Page 9 sur 12. Éléments 81 à 90 sur 113 affichés.</div></div> <div class="pagination" role="navigation"><div class="pagination-short"><a href="index.php?p=2&page=9" title="Aller à la page précédente"><i class="fa fa-angle-double-left"></i></a> <a href="index.php?p=2&page=11" title="Aller à la page suivante"><i class="fa fa-angle-double-right"></i></a> </div><div class="pagination-pages"><a href="index.php?p=2&page=1" title="Aller à la page 1">1</a> <span>…</span> <a href="index.php?p=2&page=8" title="Aller à la page 8">8</a> <a href="index.php?p=2&page=9" title="Aller à la page 9">9</a> <span>10</span> <a href="index.php?p=2&page=11" title="Aller à la page 11">11</a> <a href="index.php?p=2&page=12" title="Aller à la page 12">12</a> </div><div class="pagination-details">Page 10 sur 12. Éléments 91 à 100 sur 113 affichés.</div></div> <div class="pagination" role="navigation"><div class="pagination-short"><a href="index.php?p=2&page=10" title="Aller à la page précédente"><i class="fa fa-angle-double-left"></i></a> <a href="index.php?p=2&page=12" title="Aller à la page suivante"><i class="fa fa-angle-double-right"></i></a> </div><div class="pagination-pages"><a href="index.php?p=2&page=1" title="Aller à la page 1">1</a> <span>…</span> <a href="index.php?p=2&page=9" title="Aller à la page 9">9</a> <a href="index.php?p=2&page=10" title="Aller à la page 10">10</a> <span>11</span> <a href="index.php?p=2&page=12" title="Aller à la page 12">12</a> </div><div class="pagination-details">Page 11 sur 12. Éléments 101 à 110 sur 113 affichés.</div></div> <div class="pagination" role="navigation"><div class="pagination-short"><a href="index.php?p=2&page=11" title="Aller à la page précédente"><i class="fa fa-angle-double-left"></i></a> <span><i class="fa fa-angle-double-right"></i></span> </div><div class="pagination-pages"><a href="index.php?p=2&page=1" title="Aller à la page 1">1</a> <span>…</span> <a href="index.php?p=2&page=10" title="Aller à la page 10">10</a> <a href="index.php?p=2&page=11" title="Aller à la page 11">11</a> <span>12</span> </div><div class="pagination-details">Page 12 sur 12. Éléments 111 à 113 sur 113 affichés.</div></div>