système de pagination en php

5
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. < ?php 2. 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 $count 12. 13. $count = mysql_num_rows(mysql_query($requete));

Upload: globalanswers11

Post on 16-Apr-2015

19 views

Category:

Documents


1 download

DESCRIPTION

Créer un système de pagination en php pour afficher un nombre limit de enregistrement de la Base de Donnée

TRANSCRIPT

Page 1: Système de pagination en php

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

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

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

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;