欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2024-01-30 13:16:34
...
个人学习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;
  • }
  • }
  • ?>
  • 复制代码 个人写的一个简单通用分页类