Académique Documents
Professionnel Documents
Culture Documents
Dans cet article je vais vous montrer comment cre un systme de pagination pour vos requtes MYSQL en utilisant php et raintpl(moteur de template en php simple et performant) , si vous navez jamais entendu parler de RainTpl je vous invite lire cet article afin que vous fassiez connaissance .
24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34.
// vrifier si on a besoin de suivant ou prcedant et afficher la liste des pages if ($pages > 1) { $pagecourante = ($firstresult/$parpage) + 1; $debut = (($pagecourante - $range) > 0) ? ($pagecourante - $range) : 1; $fin = (($pagecourante + $range) < $pages) ? ($pagecourante + $range) : $pages;
$compteur .= "<span class="count">Page $pagecourante sur $pages</span>"; if ($pagecourante > 1) { $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 range 54. 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 reponse 71. $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 rsultats de notre requte mysql et $pagination['pagination'] celui qui contient la liste des pages . aprs on va cre un fichier index.php par exemple l ou on va appeler notre fonction et boucler sur $pagination['data'].
1. 2. 3. < ?php // inclure le moteur de template raintpl
4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34.
include "inc/rain.tpl.class.php"; //include Rain TPL //se connecter notre base de donne $connexion=mysql_connect("localhost","root",""); mysql_select_db("pagination",$connexion); //inclure notre fichier fonction include fonction.php; // instancier le moteur de temlate $tpl = new raintpl(); //notre requete paginer $requete="select id,titre,corp from articles where status=active"; //on appelle la fonction paginer en lui passant la requete le nombre darticles par page et le range(par defaut vaut 3) $pagination=paginer($requete,3,4); //assigner nos variables de sortie et afficher le template listearticles.html //cre une varibale "pages" qui contient la liste des pages $tpl->assign("pages",$pagination[pagination]); //cre une variable "content" (array) quon va boucler aprs dans notre template $tpl->assign("content",$pagination[data]); //dessiner la template listearticle.html $tpl->draw(listarticles); ?>
et enfin dans le rpertoire tpl on va cre un fichier html listearticles.html l ou on va boucler et afficher nos articles
1. 2. 3. 4. 5. {loop="content"} <div class="titre"><strong>{$value.id}-{$value.titre}</strong></div> <div class="corp">{$value.corp}</div> {/loop} <div class="pagination">{$pages}</div>
{$value.id},{$value.titre} et {$value.corp} sont les champs utilis dans notre requte . et pour styler les pages voila un code css ajouter dans votre template .
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. .pagination{ background:#F9F9F9; display:inline-block; padding:5px; border:solid 1px #DDD; border-radius:3px; margin-top:20px; } .page{ color:#333333; text-shadow:0px 1px #F6F6F6; padding:2px 6px 2px 6px; border:solid 1px #B6B6B6; box-shadow:0px 1px #EFEFEF; -moz-box-shadow:0px 1px #EFEFEF; -webkit-box-shadow:0px 1px #EFEFEF; background:#E6E6E6; background:-moz-linear-gradient(top,#FFFFFF 1px,#F3F3F3 1px,#E6E6E6); background:-webkit-gradient(linear,0 0,0 100%,color-stop(0.02,#FFFFFF),color-stop(0.02,#F3F3F3),colorstop(1,#E6E6E6)); 20. margin:2px; 21. display:inline-block;
22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40.
text-decoration:none; } .page:hover,.courante{ color:#FFFFFF; box-shadow:0px 1px #E7E7E7; -moz-box-shadow:0px 1px #E7E7E7; -webkit-box-shadow:0px 1px #E7E7E7; text-shadow:0px 1px #4E802C; border-color:#478223; background:#599F2F; background:-moz-linear-gradient(top,#9FE355 1px,#79BF4A 1px,#599F2F); background:-webkit-gradient(linear,0 0,0 100%,color-stop(0.02,#9FE355),color-stop(0.02,#79BF4A),colorstop(1,#599F2F)); } .titre{ border:solid 1px #DDD; background:#EEE; margin:10px;