système de pagination en php
DESCRIPTION
Créer un système de pagination en php pour afficher un nombre limit de enregistrement de la Base de DonnéeTRANSCRIPT
![Page 1: Système de pagination en php](https://reader036.vdocuments.fr/reader036/viewer/2022082502/5531400e550346dd568b49f4/html5/thumbnails/1.jpg)
Tutoriel : Crée Un Système De Pagination En Php Et RainTpl
Dans cet article je vais vous montrer comment crée un système de pagination pour vos requêtes
MYSQL en utilisant php et raintpl(moteur de template en php simple et performant) ,
si vous n’avez jamais entendu parler de RainTpl je vous invite à lire cet article afin que vous
fassiez connaissance .
Pourquoi Un Système De Pagination
La pagination c’est (afficher des informations sur plusieurs pages) permet de faciliter la
navigation et d’économiser les ressources systèmes.
Nous allons voir ici comment faire un système de pagination facilement.
dans cet article on va utiliser une fonction php que je vient de crée qui utilise 3 paramètres :
1 – La requête MYSQL qu’on souhaite paginer.
2 – Nombre d’article par page.
3 – le range (c’est le nombre de page a afficher à gauche et à droite de notre page actuelle).
on va commencer par crée un fichier fonction.php là ou on va mettre notre focntion de
pagination .
1. < ?php2. function paginer($requete,$parpage,$range=3) {3. // definir d’ou on va commencer notre requete pour la clause limit.4. 5. if (isset($_GET[‘firstresult’])) { 6. $firstresult = (int) ($_GET[‘firstresult’]); 7. }8. else { 9. $firstresult = 0;10. }11. //compter le nombre d’enregitrement dans la table et l’assigner a $count12. 13. $count = mysql_num_rows(mysql_query($requete)); 14. 15. //calculer le nombre des pages necessaires16. $pages = ceil($count/$parpage); 17. //chercher le resultat de requete pour notre page 18. $query=$requete." LIMIT ".$firstresult.",".$parpage; $results =mysql_query($query); 19. //recuperer le resultat de notre page dans un tableau $data 20. 21. while ($list = mysql_fetch_array($results)) { 22. $data[]=$list; 23. }
![Page 2: Système de pagination en php](https://reader036.vdocuments.fr/reader036/viewer/2022082502/5531400e550346dd568b49f4/html5/thumbnails/2.jpg)
24. 25. // vérifier si on a besoin de suivant ou précedant et afficher la liste des pages26. 27. if ($pages –> 1) {28. $pagecourante = ($firstresult/$parpage) + 1;29. $debut = (($pagecourante - $range) > 0) ? ($pagecourante - $range) : 1;30. $fin = (($pagecourante + $range) < $pages) ? ($pagecourante + $range) : $pages;31. 32. $compteur .= "<span class="count">Page $pagecourante sur $pages</span>";33. if ($pagecourante > 1) {34. $precedant .= ‘<a class="page" href="’.$_SERVER[‘PHP_SELF’].‘?firstresult=’ .
($firstresult - $parpage) . ‘"><<</a>’;35. }36. 37. for ($i = $debut; $i if($i==$pagecourante){38. $listepages .= ‘<span class="page courante"><strong>’.$i.‘</strong></span>’;39. }40. else{41. 42. $listepages .= ‘<a class="page" href="’.$_SERVER[‘PHP_SELF’].‘?firstresult=’ .
($parpage * ($i - 1)) . ‘">’.$i.‘</a>’;43. }44. }45. if ($pagecourante < $pages) {46. $suivant .= ‘<a class="page" href="’.$_SERVER[‘PHP_SELF’].‘?firstresult=’ .
($firstresult + $parpage) . ‘">>></a>’;47. }48. }49. 50. $premierepage.=‘<a class="page" href="’.$_SERVER[‘PHP_SELF’].‘?firstresult=0">1</a>’;51. $dernierepage.=‘<a class="page" href="’.$_SERVER[‘PHP_SELF’].‘?firstresult=’.
(($pages*$parpage)-$parpage).‘">’.$pages.‘</a>’;52. 53. // calcul du range54. if ($pages-($pagecourante + $range) > 1) {55. $listepages= $listepages.‘<span class="page"> … </span>’.$dernierepage;56. }57. elseif($pages-($pagecourante + $range) == 1) {58. $listepages = $listepages.$dernierepage;59. }60. else{61. $listepages = $listepages;62. }63. if(($pagecourante - $range) > 1){64. $listepages = $premierepage.‘<span class="page"> … </span>’.$listepages;65. }66. elseif(($pagecourante - $range) == 1){67. $listepages = $listepages;68. }69. 70. // construire un tableau de reponse71. $pagination="72. <div class="pagination">".$compteur.$listepages.$precedant.$suivant."</div>73. ";74. return $reponse=array("data"=>$data,"pagination"=>$pagination);75. }76. ?>
cette fonction retourne 2 tableaux $pagination['data'] celui qui contient les résultats de
notre requête mysql et $pagination['pagination'] celui qui contient la liste des pages .
aprés on va creé un fichier index.php par exemple là ou on va appeler notre fonction et boucler
sur $pagination['data'].
1. < ?php2. // inclure le moteur de template raintpl
![Page 3: Système de pagination en php](https://reader036.vdocuments.fr/reader036/viewer/2022082502/5531400e550346dd568b49f4/html5/thumbnails/3.jpg)
3. 4. include "inc/rain.tpl.class.php";5. //include Rain TPL //se connecter à notre base de donnée6. $connexion=mysql_connect("localhost","root","");7. mysql_select_db("pagination",$connexion);8. 9. //inclure notre fichier fonction10. include ‘fonction.php’;11. 12. // instancier le moteur de temlate13. 14. $tpl = new raintpl();15. 16. //notre requete à paginer17. 18. $requete="select id,titre,corp from articles where status=’active’";19. 20. //on appelle la fonction paginer en lui passant la requete le nombre d’articles par page et le
range(par defaut vaut 3)21. 22. $pagination=paginer($requete,3,4);23. 24. //assigner nos variables de sortie et afficher le template listearticles.html25. //crée une varibale "pages" qui contient la liste des pages26. $tpl->assign("pages",$pagination[‘pagination’]);27. 28. //crée une variable "content" (array) qu’on va boucler aprés dans notre template29. $tpl->assign("content",$pagination[‘data’]);30. 31. //dessiner la template listearticle.html32. $tpl->draw(‘listarticles’);33. 34. ?>
et enfin dans le répertoire tpl on va crée un fichier html listearticles.html là ou on va boucler et
afficher nos articles
1. {loop="content"}2. <div class="titre"><strong>{$value.id}-{$value.titre}</strong></div>3. <div class="corp">{$value.corp}</div>4. {/loop}5. <div class="pagination">{$pages}</div>
{$value.id},{$value.titre} et {$value.corp} sont les champs utilisé dans notre
requête .
et pour styler les pages voila un code css à ajouter dans votre template .
1. .pagination{2. background:#F9F9F9;3. display:inline-block;4. padding:5px;5. border:solid 1px #DDD;6. border-radius:3px;7. margin-top:20px;8. }9. .page{10. color:#333333;11. text-shadow:0px 1px #F6F6F6;12. padding:2px 6px 2px 6px;13. border:solid 1px #B6B6B6;14. box-shadow:0px 1px #EFEFEF;15. -moz-box-shadow:0px 1px #EFEFEF;16. -webkit-box-shadow:0px 1px #EFEFEF;17. background:#E6E6E6;18. background:-moz-linear-gradient(top,#FFFFFF 1px,#F3F3F3 1px,#E6E6E6);
![Page 4: Système de pagination en php](https://reader036.vdocuments.fr/reader036/viewer/2022082502/5531400e550346dd568b49f4/html5/thumbnails/4.jpg)
19. background:-webkit-gradient(linear,0 0,0 100%,color-stop(0.02,#FFFFFF),color-stop(0.02,#F3F3F3),color-stop(1,#E6E6E6));
20. margin:2px;21. display:inline-block;22. text-decoration:none;23. 24. }25. 26. .page:hover,.courante{27. color:#FFFFFF;28. box-shadow:0px 1px #E7E7E7;29. -moz-box-shadow:0px 1px #E7E7E7;30. -webkit-box-shadow:0px 1px #E7E7E7; 31. text-shadow:0px 1px #4E802C;32. border-color:#478223;33. background:#599F2F;34. background:-moz-linear-gradient(top,#9FE355 1px,#79BF4A 1px,#599F2F);35. background:-webkit-gradient(linear,0 0,0 100%,color-stop(0.02,#9FE355),color-
stop(0.02,#79BF4A),color-stop(1,#599F2F));36. }37. .titre{38. border:solid 1px #DDD;39. background:#EEE;40. margin:10px;