Créer un système de pagination en PHP
Fermé
Aurèli1s
Messages postés
136
Date d'inscription
dimanche 19 juin 2011
Statut
Membre
Dernière intervention
14 octobre 2013
-
17 sept. 2011 à 17:39
killianwebmaster - 5 nov. 2012 à 14:18
killianwebmaster - 5 nov. 2012 à 14:18
A voir également:
- Créer un système de pagination automatique en php
- Créer un compte google - Guide
- Comment créer un groupe whatsapp - Guide
- Restauration systeme windows 10 - Guide
- Créer un compte instagram sur google - Guide
- Créer un compte gmail - Guide
6 réponses
donniecent
Messages postés
19
Date d'inscription
lundi 1 mars 2010
Statut
Membre
Dernière intervention
1 juin 2012
27
Modifié par donniecent le 26/05/2012 à 16:27
Modifié par donniecent le 26/05/2012 à 16:27
Bonjour, pour faire une pagination rien de plus simple, il faut tout simplement créer 2 fonctions, une qui calcul le nombre de pages en fonction du nombre de publication que vous souhaitez avoir par page. Je vous le mets en 2 étapes (3 minutes de copier-coller ^^ ) tenez c'est cadeau :
PS : Source de cette solution http://b2geek.com/article-comment-faire-des-liens-suivant-precedent-avec-les-deux-numeros-de-page-2-3.html
** Etape 1 mettre les fonctions dans un fichier fonctions.php (copiez le bloc) ***
Dans la fonction A (calcul_des_pages) vous n'avez rien a modifier. Et dans la fonction B (affichage_des_liens) vous devez juste remplace "votresite.com" par la vraie URL de votre site. (15 remplacements/1minute).
Après avoir enregistré vos deux fonctions dans votre fichier fonctions.php vous pouvez utiliser le code sur votre page.
************** Etape 2 : Utilisation dans votre code **************
Vous devez copier coller cette page sur votre page ou vous voulez voir apparaitre la pagination.
Donnees a remplacer :
$table = 'REMPLACER';//Le nom de la table o|u se trouve vos publications
$resultats = 10; //vous choisissez le nombre de publications à afficher sur chaque page (réglé à 10 mais peut etre modifié).
$hote = "REMPLACER";//votre hote
$base = "REMPLACER";//votre nom de base de donne
$pseudo_bdd = "REMPLACER";//pseudo
$mdp_bdd = "REMPLACER";//mot de passe
Etape 3 : Il y a pas d'étape 3 c'est finit :). Aller bonne fin de journée, un petit +1 serait gentil de votre part :). (source de ces codes ==> http://b2geek.com/article-comment-faire-des-liens-suivant-precedent-avec-les-deux-numeros-de-page-2-3.html )
L'informatique au service du partage, du divertissement, des passions, de la communication, de la technologie, du futur.
PS : Source de cette solution http://b2geek.com/article-comment-faire-des-liens-suivant-precedent-avec-les-deux-numeros-de-page-2-3.html
** Etape 1 mettre les fonctions dans un fichier fonctions.php (copiez le bloc) ***
<?php // A - Fonction pour calculer le nombre de pages function calcul_des_pages($table, $bdd, $resultats) { //je compte le nombre de messages postés dans ma base de donnée $reponse = $bdd->query('SELECT COUNT(*) AS nbr_publication FROM '.$table.''); $donnees = $reponse->fetch(); $GLOBALS['nb_req']++; if (isset($_GET['page'])) //Si le numéro de page est connu ( parametre $_GET['page'] est prit dans l'url ), celui_ci est égal a la variable $pages { $page = (int)$_GET['page']; } else //Mais Si le numéro de page est inconnu, celui_ci est égal a 1 { $page = 1; } $nbr_publication = $donnees['nbr_publication']; //Nombre de méssages dans ma base de donnée $nbr_pages = $nbr_publication/$resultats; //Nombre de page du site en fonction du nombre de méssages e le nombre de résultats demandé par page $nbr_pages = ceil($nbr_pages); //Ce nombre est arrondi au supperieur (ex : si j'ai 2,3 pages je l'arrondi comme ça 2,3 -> 3 $premier_article = $resultats*$page-($resultats*$page/$page); //Ligne a partir de laquelle on va afficher les résultats $dernier_article = $resultats; //Le nombre de résultats à afficher a partir de la ligne séléctionnée avant. return array($page, $nbr_pages, $premier_article, $dernier_article); // Pour pouvoir récuperer les variables $nbr_pages, $premier et $dernier par la suite dans mon code } // B la fonction pour afficher les liens (page 1, 2 3 etc..) : function affichage_des_liens($page, $nbr_pages) { /******** DEBUT *********/ echo '<div id ="liens_pages"> <p>Pages :'; $precedent = $page - 1; if($page > 5 AND $page != 6) //Si le numero de la page sur laquelle on se trouve est inférieur a 5 { //On affiche les deux premiers liens et un lien précédent $debut = '<a href="'votresite.com?page='.$precedent.'" title="Page précédente"><img src="http://b2geek.com/images/icones/fleche-erreur-a-gauche-precedente-icone-3917-16.png" alt="fleche-erreur-a-gauche-precedente-icone-3917-16.png"/></a> <a class ="liens_pages" href="votresite.com?page=1" title="page n° 1">1</a> <a class ="liens_pages" href="votresite.com?page=2" title="page n° 2">2</a> ... '; } elseif($page == 1) { $debut = ''; } elseif($page < 5 AND 1 < $page) { $debut = '<a href="votresite.com?page='.$precedent.'" title="Page précédente"><img src="http://b2geek.com/images/icones/fleche-erreur-a-gauche-precedente-icone-3917-16.png" alt="fleche-erreur-a-gauche-precedente-icone-3917-16.png"/></a>'; } elseif($page == 5) { $debut = '<a class ="liens_pages" href="votresite.com?page=1">1</a>'; } elseif($page == 6) { $debut = '<a href="'votresite.com?page='.$precedent.'" title="Page précédente"><img src="images/icones/fleche-erreur-a-gauche-precedente-icone-3917-16.png" alt="fleche-erreur-a-gauche-precedente-icone-3917-16.png"/></a> <a class ="liens_pages" href="votresite.com?page=1" title="page n° 1">1</a> ...'; } else { $debut = '<a class ="liens_pages" href="votresite.com?page='.$precedent.'" title="Page précédente"><img src="images/icones/fleche-erreur-a-gauche-precedente-icone-3917-16.png" alt="fleche-erreur-a-gauche-precedente-icone-3917-16.png"/></a> <a class ="liens_pages" href="votresite.com?page=1">1</a> ... '; } echo ''.$debut.''; /*********** MILIEU *********/ for ($i = 1; $i <= $nbr_pages; $i++) { if($i==$page) //Si il s'agit de la page actuelle... { echo '<span class = "liens_actif">'.$i.'</span>'; } elseif($i > $page + 3) //Si il s'agit de la page actuelle... { echo ''; } elseif($i < $page - 3) //Si il s'agit de la page actuelle... { echo ''; } else { echo '<a class ="liens_pages" href="votresite.com?page='.$i.'" title="page n° '.$i.'">'.$i.'</a> '; } } /******** FIN ********/ $totalmoins1 = $nbr_pages - 1; $totalmoins4 = $nbr_pages - 4; $totalmoins5 = $nbr_pages - 5; $suivant = $page + 1; if($page < $totalmoins4 AND $page != $totalmoins5) { $fin = '... <a class ="liens_pages" href="votresite.com?page='.$totalmoins1.'" title="page n° '.$totalmoins1.'">'.$totalmoins1.'</a> <a class ="liens_pages" href="votresite.com?page='.$nbr_pages.'" title="page n° '.$nbr_pages.'">'.$nbr_pages.'</a> <a class ="liens_pages" href="votresite.com?page='.$suivant.'" title="Page suivante"><img src="http://b2geek.com/images/icones/prochain-a-droite-icone-5523-16-2.png" alt="prochain-a-droite-icone-5523-16.png"/></a>'; } elseif($page == $totalmoins4) { $fin = '<a class ="liens_pages" href="votresite.com?page='.$nbr_pages.'" title="page n° '.$nbr_pages.'">'.$nbr_pages.'</a>'; } elseif($page == $totalmoins5) { $fin = '... <a class ="liens_pages" href="votresite.com?page='.$nbr_pages.'" title="page n° '.$nbr_pages.'">'.$nbr_pages.'</a> <a class ="liens_pages" href="votresite.com?page='.$suivant.'" title="Page suivante"><img src="http://b2geek.com/images/icones/prochain-a-droite-icone-5523-16-2.png" alt="prochain-a-droite-icone-5523-16.png"/></a>'; } else { $fin = ''; } echo ''.$fin.'</p>'; echo'</div>'; } ?>
Dans la fonction A (calcul_des_pages) vous n'avez rien a modifier. Et dans la fonction B (affichage_des_liens) vous devez juste remplace "votresite.com" par la vraie URL de votre site. (15 remplacements/1minute).
Après avoir enregistré vos deux fonctions dans votre fichier fonctions.php vous pouvez utiliser le code sur votre page.
************** Etape 2 : Utilisation dans votre code **************
<?php include('fonctions.php'); //definistion de la table ou compter le nombre de contenu $table = 'REMPLACER'; $resultats = 10; //vous choisissez le nombre de publications à afficher sur chaque page (réglé à 10 mais peut etre modifié). $hote = "REMPLACER";//votre hote $base = "REMPLACER";//votre nom de base de donne $pseudo_bdd = "REMPLACER";//pseudo $mdp_bdd = "REMPLACER";//mot de passe try { $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; $bdd = new PDO('mysql:host='.$hote.';dbname='.$base, $pseudo_bdd, $mdp_bdd, $pdo_options); } catch (Exception $e) { die('Erreur : ' . $e->getMessage()); } //CALCUL DU NOMBRE DE PAGE calcul_des_pages($table, $bdd, $resultats); //EXTRAIRE LES VALEURS DE $page, $nbr_pages, $premier ET $dernier DE LA FONCTION calcul_des_pages($table, $bdd, $resultats) list($page, $nbr_pages, $premier_article, $dernier_article) = calcul_des_pages($table, $bdd, $resultats); // Je récupère tous les articles postés ainsi que le nombre de commentaire associés à chacuns $req = $bdd->query('SELECT * FROM '.$table.' ORDER BY id DESC LIMIT '.$premier.', '.$dernier.''); while ($donnees = $req->fetch()) { //vos données à afficher } affichage_des_liens($page, $nbr_pages); ?>
Vous devez copier coller cette page sur votre page ou vous voulez voir apparaitre la pagination.
Donnees a remplacer :
$table = 'REMPLACER';//Le nom de la table o|u se trouve vos publications
$resultats = 10; //vous choisissez le nombre de publications à afficher sur chaque page (réglé à 10 mais peut etre modifié).
$hote = "REMPLACER";//votre hote
$base = "REMPLACER";//votre nom de base de donne
$pseudo_bdd = "REMPLACER";//pseudo
$mdp_bdd = "REMPLACER";//mot de passe
Etape 3 : Il y a pas d'étape 3 c'est finit :). Aller bonne fin de journée, un petit +1 serait gentil de votre part :). (source de ces codes ==> http://b2geek.com/article-comment-faire-des-liens-suivant-precedent-avec-les-deux-numeros-de-page-2-3.html )
L'informatique au service du partage, du divertissement, des passions, de la communication, de la technologie, du futur.
Utilisateur anonyme
17 sept. 2011 à 21:25
17 sept. 2011 à 21:25
Bonjour,
Pour la pagination PHP mySQL tout est basé sur la clause SQL
limit x,y qui affiche à partir de la ligne x, y lignes
Donc vous pouvez jouer là dessus
Une page qui reçoit en GET ou POST le numéro de la page à afficher (si rien $page=0)
ensuite vous calculez le x en fonction du nombre de lignes vous acceptez par page, mettons LIGNES=20 define('LIGNES',20);
x est calculé ainsi :
$x = ($page-1)*LIGNES;
$y = LIGNES;
votre requête devient pour cette page
$sql='select ... from ... where ... limit '.$x.','.$y;
Après vous gérez des boutons page suivante $lien='href="url?page='.($page+1).'">Page suivante</a>'
Même chose pour page précédente
Après si vous connaissez le nombre total de ligne de votre requête vous pouvez aussi faire un système du genre :
1...5 6 7...20
Tout est ouvert, mais le principe est là.
Pour la pagination PHP mySQL tout est basé sur la clause SQL
limit x,y qui affiche à partir de la ligne x, y lignes
Donc vous pouvez jouer là dessus
Une page qui reçoit en GET ou POST le numéro de la page à afficher (si rien $page=0)
ensuite vous calculez le x en fonction du nombre de lignes vous acceptez par page, mettons LIGNES=20 define('LIGNES',20);
x est calculé ainsi :
$x = ($page-1)*LIGNES;
$y = LIGNES;
votre requête devient pour cette page
$sql='select ... from ... where ... limit '.$x.','.$y;
Après vous gérez des boutons page suivante $lien='href="url?page='.($page+1).'">Page suivante</a>'
Même chose pour page précédente
Après si vous connaissez le nombre total de ligne de votre requête vous pouvez aussi faire un système du genre :
1...5 6 7...20
Tout est ouvert, mais le principe est là.
Aurèli1s
Messages postés
136
Date d'inscription
dimanche 19 juin 2011
Statut
Membre
Dernière intervention
14 octobre 2013
4
Modifié par Aurèli1s le 18/09/2011 à 13:21
Modifié par Aurèli1s le 18/09/2011 à 13:21
Merci pour l'instant j'ai 6 pages, avec 6 articles par pages, le truck qui me coince, c'est mon système de vignette par pages qui donne un preview avec une image et un résume des articles...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Aurèli1s
Messages postés
136
Date d'inscription
dimanche 19 juin 2011
Statut
Membre
Dernière intervention
14 octobre 2013
4
18 sept. 2011 à 13:30
18 sept. 2011 à 13:30
Je vous invite a regarder mon site avec sont système actuel, ou j'ai pour le moment un système assez primitif le temps d'intégrer le tous avec des requêtes entre php/base de données, je répète je vais me lancer mais j'ai besoin d'une petite aide si quelqu'un pouvais ce joindre a moi....
Aurèli1s
Messages postés
136
Date d'inscription
dimanche 19 juin 2011
Statut
Membre
Dernière intervention
14 octobre 2013
4
18 sept. 2011 à 18:54
18 sept. 2011 à 18:54
Ce qui me coince c'est la pratique, je saurais creer les tables pour la base de donnee mais je n'est pas assez de notion pour faire en sorte que tous s'affige avec la pagination, est ce que je peut avoir ton msn, pour ton soutiens en ligne, du moins pour le debut seulement pour ne pas abuser de ton temps merci beaucoup d'avence..
Aurèli1s
Messages postés
136
Date d'inscription
dimanche 19 juin 2011
Statut
Membre
Dernière intervention
14 octobre 2013
4
18 sept. 2011 à 21:26
18 sept. 2011 à 21:26
Up! svp
5 nov. 2012 à 14:06
5 nov. 2012 à 14:10