Fonction de pagination simple

Contenu du snippet

Bon ben c'est ma première source ici alors me frappez pas trop fort XD.

C'est une fonction de pagination comme on en voit partout mais ça pourra peut être aidé certain comme je pense (c'est mon avis ça hein =x) quelle est pas trop dégueulasse ;p.

Source / Exemple :


<?php
/**

  • Fonction créant une pagination
*
  • @param int $nb_data le nombre de donnée
  • @param int $data_per_page le nombre de donnée sur une seule page
  • @param int $nb_link_per_page nombre de liens affiché sur les cotés de la page courante
  • @param string $url l'url de la page actuelle
  • @param bool $url_rewriting activation de l'url rewriting
  • @param string $var_page nom de la variable $_GET
  • @param string $display contenu s'affichant avant les numéros des pages
  • @return array
  • /
function pagination($nb_data, $data_per_page = 10, $nb_link_per_page = 5, $url = '', $url_rewriting = false, $var_page = 'page', $display = '') { $data_per_page = is_numeric($data_per_page) ? $data_per_page : 10; if ($nb_data > 0 && $nb_data > $data_per_page) { $nb_pages = ceil($nb_data / $data_per_page); $current_page = !empty($_GET[$var_page]) && is_numeric($_GET[$var_page]) && $_GET[$var_page] < $nb_pages + 1 ? $_GET[$var_page] : 1; $start_page = ($current_page - 1) * $data_per_page; if ($url_rewriting) { $link = $url; $next_page = sprintf($url, $current_page + 1); $previous_page = sprintf($url, $current_page - 1); $first_page = sprintf($url, 1); $last_page = sprintf($url, $nb_pages); } else { $link .= strstr($url, '?') ? '&amp;' : '?'; $link .= $var_page . '='; $next_page = $link . ($current_page + 1); $previous_page = $link . ($current_page - 1); $first_page = $link . 1; $last_page = $link . $nb_pages; } if ($current_page != 1) { $display .= ' <a href="' . $first_page . '" title="Première page"><<</a> '; $display .= ' <a href="' . $previous_page . '" title="Page précédente"><</a> '; } for ($i = 1; $i <= $nb_pages; $i++) { if ($i - 1 < $current_page + $nb_link_per_page && $i + 1 > $current_page - $nb_link_per_page) { if ($i == $current_page) { $display .= ' <span>' . $i . '</span> '; } else { if ($url_rewriting) { $url = sprintf($link, $i); } else { $url = $link . $i; } $display .= ' <a href="' . $url . '" title="Page ' . $i . '">' . $i . '</a> '; } } } if ($current_page != $nb_pages) { $display .= ' <a href="' . $next_page . '" title="Page suivante">></a> '; $display .= ' <a href="' . $last_page . '" title="Dernière page">>></a> '; } $pagination = array( 'nb_data' => $nb_data, 'nb_pages' => $nb_pages, 'start_page' => $start_page, 'data_per_page' => $data_per_page, 'current_page' => $current_page, 'display' => $display ); return $pagination; } else { return null; } } /* Petit exemple d'utilisation */ $datas = array(); for ($i = 1; $i <= 10000; $i++) { $datas[] = 'niah_' . $i; } // Avec url rewriting $pagination = pagination(count($datas), 20, 10, 'index-%s.html', true, 'p', 'Pages : '); // Sans url rewriting $pagination = pagination(count($datas), 20, 10, $_SERVER['PHP_SELF'], false, 'p', 'Pages : '); $datas = array_slice($datas, $pagination['start_page'], $pagination['data_per_page']); foreach ($datas as $data) { echo $data . '<br />'; } echo '<br />' . $pagination['display']; ?>

A voir également

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.