Pagination page par page
Voici un petit bout de code près à l'utilisation, permettant d'effectuer une pagination et de choisir le nombre d'élément à afficher par page.
La pagination peut se faire de 2 façons:
- Page par page (Page : 1-2-3-4-5)
- <<Page précédente - Page Suivante>>
Cette option est à définir à la variable $navigation.
Pour choisir le nombre d'élément à afficher, on attribut un nombre entier à la variable $messages_par_page. Par exemple une valeur fixé à 7 affichera 7 éléments par page.
Dans ce code, je suis partit du principe que l'on affiche généralement le titre+lien et la description des éléments à paginer (comme sur les blogs). il faut donc correctement remplir les variables suivantes:
- $nom_de_la_table="***"; ->Nom de la table.
- $identifiant="***"; -> Champ id.
- $titre="***"; -> Champ qui donne un titre à l'article ou au produit ou au commentaire ...
- $description="***"; Champ qui donne une description de l'article ou du produit ...
La variable $nom_page correspond au nom de la page ou s'affiche vos articles ou autres. Par exemple un site dont les articles s'affichent de la façon suivant http://monsite.com/articles.php?id=2 donne donc pour la variable $nom_page="articles.php"
<?php /********************************************************************/ /* CHAMPS A REMPLIR */ /********************************************************************/ /* Base de données */ /********************************************************************/ $nom_du_serveur ="***"; $base ="***"; $nom_utilisateur ="***"; $passe ="***"; /********************************************************************/ /* Fin Base de données */ /********************************************************************/ //Nombre d'élément à afficher par page $messages_par_page=1; //Type de navigation //0=Suivant-Précédent //1=Toutes les pages $navigation=0; //Nom de la base $nom_de_la_table="***"; //identifiant - Généralement le champ id $identifiant="***"; //Nom du champ affichant le titre $titre="***"; //Nom du champ affichant la description $description="***"; //Nom de la page ou s'affiche vos articles ex:page.php $nom_page="***"; /********************************************************************/ /* FIN CHAMPS A REMPLIR */ /********************************************************************/ //Variable de connexion à la base de données mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe"); //Vérification d'accès à la base de données mysql_select_db("$base") or die("Impossible d'ouvrir la base de données "); //On récupère le contenu de la requête dans $entree_total $entree_total = mysql_query("SELECT COUNT(*) AS total FROM $nom_de_la_table"); //On range $entree_total sous la forme d'un tableau. $donnees_total=mysql_fetch_assoc($entree_total); //On récupère le total pour le placer dans la variable $total. $total correspond au nombre total de commentaires $total=$donnees_total['total']; //Nous allons maintenant compter le nombre de pages. On fait donc une simple division . //ceil —>Arrondit le chiffre au nombre supérieur si il n'est pas entier $nombre_de_pages=ceil($total/$messages_par_page); // Si la variable $_GET['page'] existe... if(isset($_GET['page'])) { //$page_actuelle correspond au numéro de la page ou l'on se trouve pendant la navigation. //intval — Retourne la valeur numérique entière équivalente d'une variable $page_actuelle=intval($_GET['page']); //Si la valeur de $page_actuelle est plus grande que $nombre_de_pages... if($page_actuelle>$nombre_de_pages) { $page_actuelle=$nombre_de_pages; } } // Sinon else { $page_actuelle=1; // La page actuelle est la n°1 } // On calcul la première entrée à lire $premiere_entree=($page_actuelle-1)*$messages_par_page; //Si il n'y a rien if($total == 0){ echo '<p><strong>Aucun article pour le moment :(!</strong></p>'; } else { // La requête sql pour récupérer les articles en fonction de la page ou l'on se trouve. $retour_messages=mysql_query('SELECT '.$identifiant.','.$titre.','.$description.'Pour que la pagination soit un peut plus sympa
FROM '.$nom_de_la_table.' ORDER BY '.$identifiant.' DESC LIMIT '.$premiere_entree.',
'.$messages_par_page.''); //On boucle while($affiche = mysql_fetch_array($retour_messages)) { echo '<div class="cadre">
<h2><a title="'.$affiche["$titre"].'" href="'.$nom_page.'?id='.$affiche["$identifiant"] .'">'.$affiche["$titre"].'</a></h2>
'.nl2br($affiche["$description"]).'
</div>'; } //Pour l'affichage, on centre la liste des pages echo '<div style="text-align:center;">'; if($navigation==0){ //Cette partie affiche uniquement Suivant et Précédent $suivant=$page_actuelle+1; $precedent=$page_actuelle-1; //Si la variable est plus grand ou égal if($precedent>=1){ echo '<a class="pagination" title="Page précédente"
href="'.$_SERVER['PHP_SELF'].'?page='.$precedent.'">Page précédent</a>'; } else { echo '<span class="pagination-inactif">Page précédent</span>'; } //Si la variable est plus petit ou égal if($suivant<=$nombre_de_pages){ echo '<a class="pagination" title="Page suivante"
href="'.$_SERVER['PHP_SELF'].'?page='.$suivant.'">Page suivante</a>'; } else { echo '<span class="pagination-inactif">Page suivante</span>'; } } else if($navigation==1) { //Cette partie affiche une pagination complète de toutes les pages echo 'Page : '; for($i=1; $i<=$nombre_de_pages; $i++) //On fait notre boucle { //On va faire notre condition if($i==$page_actuelle) //Si il s'agit de la page actuelle... { echo '<span class="pagination-inactif">'.$i.'</span>'; } else { echo ' <a class="pagination" title="Page '.$i.'"
href="'.$_SERVER['PHP_SELF'].'?page='.$i.'">'.$i.'</a> '; } } } echo '</div>'; mysql_close(); } ?>
, on attribut des class CSS à celui-ci..cadre{ height: auto; background:#ECFAFF; border: 1px solid #D5F4FF; margin:5px; padding:5px; } .pagination{ border: 1px solid #000 ; font-weight : bold; background : #ECFAFF; margin : 2px; padding : 3px; } .pagination:hover{ background : #000; } .pagination-inactif{ border: 1px solid #000 ; font-weight : bold; background : #000; color : white; margin : 2px; padding : 3px; }
Vous pouvez voir un exemple de ce tutoriel en action sur la page http://creer.ton.site.free.fr/pagination.php

Signaler une erreur
Comment afficher plusieurs pages dans une seule?
Codes PHP
Afficher une image aléatoirement avec du PHP et CSS.


