当前位置:Gxlcms > PHP教程 > 带多种分页方式的php分页类

带多种分页方式的php分页类

时间:2021-07-01 10:21:17 帮助过:24人阅读

  1. Class PAGE {

  2. //类开始
  3. /********************************************************
  4. * $total 记录总数
  5. * $pageNum 每页显示的条数
  6. * $url = '' 链接
  7. * $page->StartPage(显示分类统计,字符分类/数字分页,跳转);
  8. * $page->StartPage(true/false, true/false, true/false);
  9. * site http://bbs.it-home.org
  10. *********************************************************/
  11. private $total; //记录总数
  12. private $pageNum; //每页显示数
  13. private $page; //当前页数
  14. private $pages; //总的页数
  15. private $url; //页面url
  16. private $Aque; //URL参数
  17. /* 构造函数 */
  18. public function PAGE($total, $pageNum, $url='?'){
  19. $this->total = $total; //总记录数.
  20. $this->pageNum = $pageNum; //每页显示数.
  21. $this->url = $this->StrSift($url); //判断$url的值是否合法.
  22. $this->Aque = $_GET; //页面原来所传递参数.
  23. $this->page = $this->StrSift($_GET['page']); //当前页面GET(全局变量)方式参数,当前页码.
  24. $this->page = is_numeric($this->page) ? $this->page : 1; //当前页码不为数字时,则把其设为1.
  25. $this->pages = ceil($total/$pageNum); //总页数.
  26. if($this->page<1) $this->page = 1; //当页码小于1时,则把其设为1.
  27. //if($this->page>$this->pages) $this->page = $this->pages; //当页码大于最大页码时,则把其设为最大页码.
  28. }
  29. /******************
  30. * 分页方法
  31. *******************/
  32. function StartPage($str, $view=true, $jump=true){
  33. if($view==true) $PageStr .= $this->GetCount(); //分页统计信息
  34. if($str=='str') $PageStr .= $this->GetPageStr(); //选择字符分页形式
  35. else $PageStr .= $this->GetPageNum(); //选择数字分页形式
  36. if($jump==true) $PageStr .= $this->JumpSelect(); //跳转
  37. return $PageStr;
  38. }

  39. /**********************************************

  40. * 显示统计信息. 格式:共5条记录 页:2/3
  41. ***********************************************/
  42. function GetCount(){
  43. $CountStr = "共". $this->total ."条记录 页:".$this->page."/".$this->pages." ";
  44. return $CountStr;
  45. }

  46. /***********************************************

  47. * 分页格式形一:第一页 上一页 下一页 末 页
  48. ************************************************/
  49. function GetPageStr(){
  50. $url = $this->url; //获取URL
  51. //对URL参数进行处理:数组的键是URL变量,数组的值是URL变量的值.
  52. foreach($this->Aque as $key => $val){
  53. switch($key){
  54. case "page":
  55. $Next = $val + 1;
  56. $Prev = $val - 1;
  57. break;
  58. default:
  59. $Sque .= "&$key=".$this->StrSift($val);
  60. }
  61. }
  62. if($Next==0) $Next=2;
  63. //首 页 上一页
  64. switch($this->page){
  65. case $this->page<=1:
  66. $pagestr .= "首 页 ";
  67. $pagestr .= "上一页 ";
  68. break;
  69. default:
  70. $pagestr .= "首 页 ";
  71. $pagestr .= "上一页 ";
  72. }
  73. //下一页 末 页
  74. switch($this->page){
  75. case $this->page>=$this->pages:
  76. $pagestr .= "下一页 ";
  77. $pagestr .= "末 页 ";
  78. break;
  79. default:
  80. $pagestr .= "下一页 ";
  81. $pagestr .= "pages$Sque'>末 页 ";
  82. }
  83. //返回分页字符串.
  84. return $pagestr;
  85. }

  86. /***********************************************************

  87. * 分页格式形如:共4307条记录 页:1/72 1 2 3 4 5 6 7 8 9 10
  88. ************************************************************/
  89. function GetPageNum(){
  90. $url = $this->url;
  91. //对URL参数进行处理:数组的键是URL变量,数组的值是URL变量的值.
  92. foreach($this->Aque as $key => $val){
  93. switch($key){
  94. case $key!="page":
  95. $Sque .= "&$key=".$this->StrSift($val);
  96. }
  97. }
  98. switch($this->pages){
  99. //总页数大于12页:
  100. case $this->pages>12:
  101. //分页数字前:< <<
  102. switch($this->page){
  103. case $this->page>1:
  104. $pagestr .= "< ";
  105. $pagestr .= "page-1).$Sque."'><< ";
  106. break;
  107. default:
  108. $pagestr .= "< ";
  109. $pagestr .= "<< ";
  110. }
  111. //分页数字:1 2 3 4 5 6 当前页码左边6个分页链接,右边6个分页链接.
  112. for($i=$this->page-6; $i<=$this->page+6; $i++){
  113. if($i>$this->pages) break;
  114. if($i==$this->page) $pagestr .= $i." ";
  115. elseif($i>=1) $pagestr .= "$i ";
  116. }
  117. //分页数字后: > >>
  118. switch($this->page){
  119. case $this->page<$this->pages:
  120. $pagestr .= "page+1).$Sque."'>>> ";
  121. $pagestr .= "pages.$Sque."'>> ";
  122. break;
  123. default:
  124. $pagestr .= "> ";
  125. $pagestr .= ">> ";
  126. }
  127. break;
  128. default:
  129. //总页数小于12页:
  130. for($i=1; $i<=$this->pages; $i++){
  131. switch($i){
  132. case $i==$this->page:
  133. $pagestr .= $i." ";
  134. break;
  135. default:
  136. $pagestr .= "$i ";
  137. }
  138. }
  139. }
  140. //返回分页字符串.
  141. return $pagestr;
  142. }
  143. /************************
  144. * 定义跳转页. BEGIN
  145. *************************/
  146. function JumpSelect(){
  147. $url = $this->url;
  148. //对URL参数进行处理:数组的键是URL变量,数组的值是URL变量的值.
  149. foreach($this->Aque as $key => $val){
  150. if($key != "page") $Sque .= "&$key=".$this->StrSift($val);
  151. }
  152. $SelectStr = "\n\n";
  153. //返回分页字符串.
  154. return $SelectStr;
  155. }

  156. /**********************************

  157. * 过滤特殊字符.
  158. ***********************************/
  159. private function StrSift($str){
  160. $str = str_replace("\"","",$str);
  161. $str = str_replace("'","",$str);
  162. $str = str_replace("[url=file://%22,%22%22,$str/]\\","",$str[/url]);
  163. $str = str_replace("\/","",$str);
  164. $str = str_replace(":","",$str);
  165. $str = str_replace("?","",$str); //去除会出现"??".
  166. $str = str_replace(">","",$str);
  167. $str = str_replace("<","",$str);
  168. $str = str_replace("%","",$str);
  169. $str = str_replace("*","",$str);
  170. $str = str_replace("&","",$str);
  171. $str = str_replace(".","",$str);
  172. return $str;
  173. }

  174. //类结束

  175. }
  176. ?>

有兴趣的朋友,还可以参考下如下的文章: 一个不错的php分页类的代码 一个实用的php分页类

分页样式表:

人气教程排行