Maison  >  Article  >  développement back-end  >  个人写的一个简单通用分页类

个人写的一个简单通用分页类

WBOY
WBOYoriginal
2016-07-25 08:47:57933parcourir
个人学习php所写简单分页类,通用性比较强
  1. /**
  2. * 简单分页类
  3. * @author:phpprince
  4. * @QQ: 8923052
  5. * @date: 2014-04-22 21:08:35
  6. */
  7. class Page{
  8. protected $url; //地址
  9. protected $allnum; //总记录数
  10. protected $current; //当前页码
  11. protected $pagesize; //每页显示多少条记录
  12. protected $postfix; //后缀
  13. protected $style; //显示样式 共3种样式,1 2 3 分别表示前5后4,前3后3,前4后4
  14. public function __construct($url,$allnum,$current,$pagesize=10,$postfix='',$style=1){
  15. $this->url=$url;
  16. $this->allnum=$allnum;
  17. $this->current=$current;
  18. $this->pagesize=$pagesize;
  19. $this->postfix=$postfix;
  20. $this->style=$style;
  21. }
  22. //获取总页数
  23. protected function maxPageNum(){
  24. $max=ceil($this->allnum/$this->pagesize);
  25. //页码超限校正
  26. if($this->current>$max){
  27. $this->current=$max;
  28. }
  29. if($this->current $this->current=1;
  30. }
  31. return $max;
  32. }
  33. //获得第一页链接完整html str
  34. protected function firstUrl(){
  35. if($this->current!=1)
  36. {
  37. return '首页';
  38. }else{
  39. return '首页';
  40. }
  41. }
  42. //获得上一页链接完整html str
  43. protected function prevUrl(){
  44. if($this->current $fullurl='上一页';
  45. }else{
  46. $fullurl=$this->url.($this->current-1).$this->postfix;
  47. $fullurl='上一页';
  48. }
  49. return $fullurl;
  50. }
  51. //获得下一页链接完整html str
  52. protected function nextUrl(){
  53. if($this->current>=$this->maxPageNum()){
  54. $fullurl='下一页';
  55. }else{
  56. $fullurl=$this->url.($this->current+1).$this->postfix;
  57. $fullurl='下一页';
  58. }
  59. return $fullurl;
  60. }
  61. //获得最后一页链接完整html str
  62. protected function lastUrl(){
  63. if($this->current>=$this->maxPageNum()){
  64. $fullurl='末页';
  65. }else{
  66. $fullurl=$this->url.$this->maxPageNum().$this->postfix;
  67. $fullurl='末页';
  68. }
  69. return $fullurl;
  70. }
  71. //获得指定页码完整url
  72. protected function getUrl($pageno){
  73. return $this->url.$pageno.$this->postfix;
  74. }
  75. //指定显示样式
  76. protected function getStyle(){
  77. switch($this->style){
  78. case 1:
  79. $before=5;
  80. $after=4;
  81. break;
  82. case 2:
  83. $before=3;
  84. $after=3;
  85. break;
  86. case 3:
  87. $before=4;
  88. $after=4;
  89. break;
  90. default :
  91. $before=5;
  92. $after=4;
  93. }
  94. return array($before,$after);
  95. }
  96. //获得中间URL 1 2 3 4 5 ⑥ 7 8 9 10
  97. protected function getMiddelUrl(){
  98. $max=$this->maxPageNum(); //先获取总页,可校正当前页超限问题
  99. $current=$this->current; //当前页码必须合法,才能保证下面的页码范围一定正确
  100. //得到当前样式
  101. list($before,$after)=$this->getStyle();
  102. $startno=$current-$before; //起始页码
  103. $endno=$current+$after; //终止页码
  104. //为保证输出始终符合要求,在页面不超限前提下,起始页增加,则终止页必须增加,反之同理.
  105. while($endno>$max||$startno if($endno>$max){ //终止页码超界
  106. $endno--;
  107. if($startno>1){
  108. $startno--;
  109. }
  110. }
  111. if($startno $startno++;
  112. if($endno $endno++;
  113. }
  114. }
  115. }
  116. $str=''; //用于保存整个html str
  117. for($i=$startno;$i $currenturl=$this->getUrl($i);
  118. if($i!=$current){
  119. $str.="{$i}";
  120. }else{
  121. $str.=''.$i.'';
  122. }
  123. }
  124. return $str;
  125. }
  126. //返回完整分页html字符串
  127. public function getPageStr(){
  128. $str='
    '.$this->firstUrl().$this->prevUrl();
  129. $str.=$this->getMiddelUrl();
  130. $str.=$this->nextUrl().$this->lastUrl().'共'.$this->maxPageNum().'页'.$this->allnum.'条
';
  • return $str;
  • }
  • }
  • ?>
  • 复制代码 个人写的一个简单通用分页类


    Déclaration:
    Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn