Titre: Numéros de page
Date: Juin 2004
Language: PHP / MySQL
Description: Permet de créer des liens vers les autres pages quand une requête MySQL retourne beaucoup de résultats.
Affiche la page courante, un certain nombre de pages avant et après, le lien précédente et suivante ainsi que première et dernière…
Avec la configuration donnée, cela peut faire:
Première Précédente 4 5 6 7 8 9 10 11 12 13 14 Suivante
(8 est la page courante)
<?php $nb_results_p_page = 20; // nombre de résultats par page $nb_avant = 4; // nombre de page avant la page courante $nb_apres = 6; // nombre de page après la page courante $premiere = 1; // aficher le lien "première page" (1 ou 0) $derniere = 0; // afficher le lien "dernière page" (1 ou 0) $courant = empty( $_GET['page'] ) ? 1 : $_GET['page']; // page $start = ( $courant - 1 ) * $nb_results_p_page; // start (requete mysql) // comptage du nombre de lignes de la base $result = mysql_query( 'SELECT count(id) FROM table' ); if( !$result ) { // redirection erreur header( "location: erreur.php" ); exit; } $ret = mysql_fetch_array( $result ); // nombre de lignes $nb_results = $ret[0]; // exemple de requete $result = mysql_query( "SELECT * FROM table LIMIT $start, $nb_results_p_page" ); // nombre total de pages $nb_pages = ceil( $nb_results / $nb_results_p_page ); // nombre de pages avant $avant = $courant > ($nb_avant + 1) ? $nb_avant : $courant - 1; // nombre de pages après $apres = $courant <= $nb_pages - $nb_apres ? $nb_apres : $nb_pages - $courant; // première page if( $premiere && $courant - $avant > 1 ) echo '<a href="' . $_SERVER['SCRIPT_NAME'] . '">Première</a> '; // page précédente if( $courant > 1 ) echo '<a href="' . $_SERVER['SCRIPT_NAME'] . '?page=' . ($courant - 1) . '">Précédente</a> '; // affichage des numéros de page for( $i = $courant - $avant; $i <= $courant + $apres; $i++ ) { // page courante if( $i == $courant ) echo '<span style="color: #FF0000;">' . $i . '</span> '; else echo '<a href="' . $_SERVER['SCRIPT_NAME'] . '?page=' . $i . '">' . $i . '</a> '; } // page suivante if( $courant < $nb_pages ) echo '<a href="' . $_SERVER['SCRIPT_NAME'] . '?page=' . ( $courant + 1 ) . '">Suivante</a> '; if( $derniere && $courant + $apres < $nb_pages ) echo '<a href="' . $_SERVER['SCRIPT_NAME'] . '?page=' . $nb_pages . '">Dernière</a> '; ?>
Capture d’écran: ici
Laisser un commentaire