当前位置:Gxlcms > PHP教程 > 个人写的一个简单通用分页类

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

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

个人学习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<1){
  30. $this->current=1;
  31. }
  32. return $max;
  33. }
  34. //获得第一页链接完整html str
  35. protected function firstUrl(){
  36. if($this->current!=1)
  37. {
  38. return 'getUrl(1).'" title="查看第一页">首页';
  39. }else{
  40. return '首页';
  41. }
  42. }
  43. //获得上一页链接完整html str
  44. protected function prevUrl(){
  45. if($this->current<=1){
  46. $fullurl='上一页';
  47. }else{
  48. $fullurl=$this->url.($this->current-1).$this->postfix;
  49. $fullurl='上一页';
  50. }
  51. return $fullurl;
  52. }
  53. //获得下一页链接完整html str
  54. protected function nextUrl(){
  55. if($this->current>=$this->maxPageNum()){
  56. $fullurl='下一页';
  57. }else{
  58. $fullurl=$this->url.($this->current+1).$this->postfix;
  59. $fullurl='下一页';
  60. }
  61. return $fullurl;
  62. }
  63. //获得最后一页链接完整html str
  64. protected function lastUrl(){
  65. if($this->current>=$this->maxPageNum()){
  66. $fullurl='末页';
  67. }else{
  68. $fullurl=$this->url.$this->maxPageNum().$this->postfix;
  69. $fullurl='末页';
  70. }
  71. return $fullurl;
  72. }
  73. //获得指定页码完整url
  74. protected function getUrl($pageno){
  75. return $this->url.$pageno.$this->postfix;
  76. }
  77. //指定显示样式
  78. protected function getStyle(){
  79. switch($this->style){
  80. case 1:
  81. $before=5;
  82. $after=4;
  83. break;
  84. case 2:
  85. $before=3;
  86. $after=3;
  87. break;
  88. case 3:
  89. $before=4;
  90. $after=4;
  91. break;
  92. default :
  93. $before=5;
  94. $after=4;
  95. }
  96. return array($before,$after);
  97. }
  98. //获得中间URL 1 2 3 4 5 ⑥ 7 8 9 10
  99. protected function getMiddelUrl(){
  100. $max=$this->maxPageNum(); //先获取总页,可校正当前页超限问题
  101. $current=$this->current; //当前页码必须合法,才能保证下面的页码范围一定正确
  102. //得到当前样式
  103. list($before,$after)=$this->getStyle();
  104. $startno=$current-$before; //起始页码
  105. $endno=$current+$after; //终止页码
  106. //为保证输出始终符合要求,在页面不超限前提下,起始页增加,则终止页必须增加,反之同理.
  107. while($endno>$max||$startno<1){
  108. if($endno>$max){ //终止页码超界
  109. $endno--;
  110. if($startno>1){
  111. $startno--;
  112. }
  113. }
  114. if($startno<1){ //起始页码超界
  115. $startno++;
  116. if($endno<$max){
  117. $endno++;
  118. }
  119. }
  120. }
  121. $str=''; //用于保存整个html str
  122. for($i=$startno;$i<=$endno;$i++){
  123. $currenturl=$this->getUrl($i);
  124. if($i!=$current){
  125. $str.="{$i}";
  126. }else{
  127. $str.=''.$i.'';
  128. }
  129. }
  130. return $str;
  131. }
  132. //返回完整分页html字符串
  133. public function getPageStr(){
  134. $str=''.$this->firstUrl().$this->prevUrl();
  135. $str.=$this->getMiddelUrl();
  136. $str.=$this->nextUrl().$this->lastUrl().'共'.$this->maxPageNum().'页'.$this->allnum.'条';
  137. return $str;
  138. }
  139. }
  140. ?>

人气教程排行