分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

PHP ?完美分页

发布时间:2023-09-06 01:11责任编辑:熊小新关键词:PHP

首先一个分页类,如下(摘自网络)可拷贝直接使用

  1. <?php
  2. /*
  3. *Createdon2013-12-3
  4. *分页类
  5. *Tochangethetemplateforthisgeneratedfilegoto
  6. *Window-Preferences-PHPeclipse-PHP-CodeTemplates
  7. */
  8. classPagination{
  9. private$each_disNums;//每页显示的条目数
  10. private$nums;//总条目数
  11. private$current_page;//当前被选中的页
  12. private$sub_pages;//每次显示的页数
  13. private$pageNums;//总页数
  14. private$page_array=array();//用来构造分页的数组
  15. private$subPage_link;//每个分页的链接
  16. private$subPage_type;//显示分页的类型
  17. /*
  18. __construct是SubPages的构造函数,用来在创建类的时候自动运行.
  19. @$each_disNums每页显示的条目数
  20. @nums总条目数
  21. @current_num当前被选中的页
  22. @sub_pages每次显示的页数
  23. @subPage_link每个分页的链接
  24. @subPage_type显示分页的类型
  25. 当@subPage_type=1的时候为普通分页模式
  26. example:共4523条记录,每页显示10条,当前第1/453页[首页][上页][下页][尾页]
  27. 当@subPage_type=2的时候为经典分页样式
  28. example:当前第1/453页[首页][上页]12345678910[下页][尾页]
  29. */
  30. function__construct($each_disNums,$nums,$current_page,$sub_pages,$subPage_link,$subPage_type){
  31. $this->each_disNums=intval($each_disNums);
  32. $this->nums=intval($nums);
  33. if(!$current_page){
  34. $this->current_page=1;
  35. }else{
  36. $this->current_page=intval($current_page);
  37. }
  38. $this->sub_pages=intval($sub_pages);
  39. $this->pageNums=ceil($nums/$each_disNums);
  40. $this->subPage_link=$subPage_link;
  41. $this->show_SubPages($subPage_type);
  42. //echo$this->pageNums."--".$this->sub_pages;
  43. }
  44. /*
  45. __destruct析构函数,当类不在使用的时候调用,该函数用来释放资源。
  46. */
  47. function__destruct(){
  48. unset($each_disNums);
  49. unset($nums);
  50. unset($current_page);
  51. unset($sub_pages);
  52. unset($pageNums);
  53. unset($page_array);
  54. unset($subPage_link);
  55. unset($subPage_type);
  56. }
  57. /*
  58. show_SubPages函数用在构造函数里面。而且用来判断显示什么样子的分页
  59. */
  60. functionshow_SubPages($subPage_type){
  61. if($subPage_type==1){
  62. $this->subPageCss1();
  63. }
  64. elseif($subPage_type==2){
  65. $this->subPageCss2();
  66. }
  67. }
  68. /*
  69. 用来给建立分页的数组初始化的函数。
  70. */
  71. functioninitArray(){
  72. for($i=0;$i<$this->sub_pages;$i++){
  73. $this->page_array[$i]=$i;
  74. }
  75. return$this->page_array;
  76. }
  77. /*
  78. construct_num_Page该函数使用来构造显示的条目
  79. 即使:[1][2][3][4][5][6][7][8][9][10]
  80. */
  81. functionconstruct_num_Page(){
  82. if($this->pageNums<$this->sub_pages){
  83. $current_array=array();
  84. for($i=0;$i<$this->pageNums;$i++){
  85. $current_array[$i]=$i+1;
  86. }
  87. }else{
  88. $current_array=$this->initArray();
  89. if($this->current_page<=3){
  90. for($i=0;$i<count($current_array);$i++){
  91. $current_array[$i]=$i+1;
  92. }
  93. }
  94. elseif($this->current_page<=$this->pageNums&&$this->current_page>$this->pageNums-$this->sub_pages+1){
  95. for($i=0;$i<count($current_array);$i++){
  96. $current_array[$i]=($this->pageNums)-($this->sub_pages)+1+$i;
  97. }
  98. }else{
  99. for($i=0;$i<count($current_array);$i++){
  100. $current_array[$i]=$this->current_page-2+$i;
  101. }
  102. }
  103. }
  104. return$current_array;
  105. }
  106. /*
  107. 构造普通模式的分页
  108. 共4523条记录,每页显示10条,当前第1/453页[首页][上页][下页][尾页]
  109. */
  110. functionsubPageCss1(){
  111. $subPageCss1Str="";
  112. $subPageCss1Str.="共".$this->nums."条记录,";
  113. $subPageCss1Str.="每页显示".$this->each_disNums."条,";
  114. $subPageCss1Str.="当前第".$this->current_page."/".$this->pageNums."页";
  115. if($this->current_page>1){
  116. $firstPageUrl=$this->subPage_link."1";
  117. $prewPageUrl=$this->subPage_link.($this->current_page-1);
  118. $subPageCss1Str.="[<ahref=‘$firstPageUrl‘>首页</a>]";
  119. $subPageCss1Str.="[<ahref=‘$prewPageUrl‘>上一页</a>]";
  120. }else{
  121. $subPageCss1Str.="[首页]";
  122. $subPageCss1Str.="[上一页]";
  123. }
  124. if($this->current_page<$this->pageNums){
  125. $lastPageUrl=$this->subPage_link.$this->pageNums;
  126. $nextPageUrl=$this->subPage_link.($this->current_page+1);
  127. $subPageCss1Str.="[<ahref=‘$nextPageUrl‘>下一页</a>]";
  128. $subPageCss1Str.="[<ahref=‘$lastPageUrl‘>尾页</a>]";
  129. }else{
  130. $subPageCss1Str.="[下一页]";
  131. $subPageCss1Str.="[尾页]";
  132. }
  133. echo$subPageCss1Str;
  134. }
  135. /*
  136. 构造经典模式的分页
  137. 当前第1/453页[首页][上页]12345678910[下页][尾页]
  138. */
  139. functionsubPageCss2(){
  140. $subPageCss2Str="";
  141. $subPageCss2Str.="当前第".$this->current_page."/".$this->pageNums."页";
  142. if($this->current_page>1){
  143. $firstPageUrl=$this->subPage_link."1";
  144. $prewPageUrl=$this->subPage_link.($this->current_page-1);
  145. $subPageCss2Str.="<ahref=‘$firstPageUrl‘>首页</a>";
  146. $subPageCss2Str.="<ahref=‘$prewPageUrl‘>上一页</a>";
  147. }else{
  148. $subPageCss2Str.="首页";
  149. $subPageCss2Str.="上一页";
  150. }
  151. $a=$this->construct_num_Page();
  152. for($i=0;$i<count($a);$i++){
  153. $s=$a[$i];
  154. if($s==$this->current_page){
  155. $subPageCss2Str.="<spanstyle=‘color:red;font-weight:bold;‘>".$s."";
  156. }else{
  157. $url=$this->subPage_link.$s;
  158. $subPageCss2Str.="<ahref=‘$url‘>".$s."</a>";
  159. }
  160. }
  161. if($this->current_page<$this->pageNums){
  162. $lastPageUrl=$this->subPage_link.$this->pageNums;
  163. $nextPageUrl=$this->subPage_link.($this->current_page+1);
  164. $subPageCss2Str.="<ahref=‘$nextPageUrl‘>下一页</a>";
  165. $subPageCss2Str.="<ahref=‘$lastPageUrl‘>尾页</a>";
  166. }else{
  167. $subPageCss2Str.="下一页";
  168. $subPageCss2Str.="尾页";
  169. }
  170. echo$subPageCss2Str;
  171. }
  172. }
  173. ?>

在需要分页的php文件中

  1. include_once("Pagination.php");
  2. //每页显示的条数
  3. $pageSize=10;
  4. //总条目数
  5. $pageTotal=$db->get_var("selectcount(*)fromtb");
  6. //每次显示的页数
  7. $sub_pages=10;
  8. //得到当前是第几页
  9. if(is_array($_GET)&&count($_GET)>0){
  10. if(isset($_GET["p"])){//是否存在"id"的参数
  11. $pageCurrent=$_GET["p"];
  12. }
  13. }else{
  14. $pageCurrent=1;
  15. }
  16. $goodses=$db->get_results("SELECTg.id,*FROMtbasgINNERJOIN(selectidfromtborderbyupdatetimedesclimit".($pageCurrent-1)*$pageSize.",10)asg1ONg.id=g1.id");

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved