一个简单的CI分页类

  1. <spanstyle="font-size:16px;">/**
  2. *
  3. *关于页码有效性的判断需要加在控制器中判断,即当页码数<1或者>总页数
  4. *
  5. */
  6. classCustom_pagination
  7. {
  8. var$page_url='';//分页目标URL
  9. var$page_size=10;//每一页行数
  10. var$page_num=1;//页码
  11. var$rows_num='';//数据总行数
  12. var$links_num=3;//选中链接前后的链接数,必须大于等于1
  13. var$anchor_class='';//链接样式类
  14. var$current_class='';//当前页样式类
  15. var$full_tag_open='';//分页开始标签
  16. var$full_tag_close='';//分页结束标签
  17. var$info_tag_open='';
  18. var$info_tag_close='';
  19. var$first_tag_open='';
  20. var$first_tag_close='';
  21. var$last_tag_open='';
  22. var$last_tag_close='';
  23. var$cur_tag_open='<strong>';
  24. var$cur_tag_close='</strong>';
  25. var$next_tag_open='';
  26. var$next_tag_close='';
  27. var$prev_tag_open='';
  28. var$prev_tag_close='';
  29. var$num_tag_open='';
  30. var$num_tag_close='';
  31. publicfunction__construct($params=array())
  32. {
  33. if(count($params)>0)
  34. {
  35. $this->init($params);
  36. }
  37. }
  38. functioninit($params=array())//初始化数据
  39. {
  40. if(count($params)>0)
  41. {
  42. foreach($paramsas$key=>$val)
  43. {
  44. if(isset($this->$key))
  45. {
  46. $this->$key=$val;
  47. }
  48. }
  49. }
  50. }
  51. functioncreate_links()
  52. {
  53. ///
  54. //准备数据
  55. ///
  56. $page_url=$this->page_url;
  57. $rows_num=$this->rows_num;
  58. $page_size=$this->page_size;
  59. $links_num=$this->links_num;
  60. if($rows_num==0OR$page_size==0)
  61. {
  62. return'';
  63. }
  64. $pages=intval($rows_num/$page_size);
  65. if($rows_num%$page_size)
  66. {
  67. //有余数pages+1
  68. $pages++;
  69. };
  70. $page_num=$this->page_num<1?'1':$this->page_num;
  71. $anchor_class='';
  72. if($this->anchor_class!=='')
  73. {
  74. $anchor_class='class="'.$this->anchor_class.'"';
  75. }
  76. $current_class='';
  77. if($this->current_class!=='')
  78. {
  79. $current_class='class="'.$this->current_class.'"';
  80. }
  81. if($pages==1)
  82. {
  83. return'';
  84. }
  85. if($links_num<0)
  86. {
  87. return'--!links_num必须大于等于0';
  88. }
  89. //创建链接开始
  90. $output=$this->full_tag_open;
  91. $output.=$this->info_tag_open.'共'.$rows_num.'条数据第'.$page_num.'/'.$pages.'页'.$this->info_tag_close;
  92. //首页
  93. if($page_num>1)
  94. {
  95. $output.=$this->first_tag_open.'<a'.$anchor_class.'href="'.site_url($page_url).'">首页</a>'.$this->first_tag_close;
  96. }
  97. //上一页
  98. if($page_num>1)
  99. {
  100. $n=$page_num-1;
  101. $output.=$this->prev_tag_open.'<a'.$anchor_class.'href="'.site_url($page_url.'/'.$n).'">上一页</a>'.$this->prev_tag_close;
  102. }
  103. //pages
  104. for($i=1;$i<=$pages;$i++)
  105. {
  106. $pl=$page_num-$links_num<0?0:$page_num-$links_num;
  107. $pr=$page_num+$links_num>$pages?$pages:$page_num+$links_num;
  108. //判断链接个数是否太少,举例,假设links_num=2,则链接个数不可少于5个,主要是当page_num等于1,2和n,n-1的时候
  109. if($pr<2*$links_num+1)
  110. {
  111. $pr=2*$links_num+1;
  112. }
  113. if($pl>$pages-2*$links_num)
  114. {
  115. $pl=$pages-2*$links_num;
  116. }
  117. if($i==$page_num)
  118. {//currentpage
  119. $output.=$this->cur_tag_open.'<span'.$current_class.'>'.$i.'</span>'.$this->cur_tag_close;
  120. }elseif($i>=$pl&&$i<=$pr)
  121. {
  122. $output.=$this->num_tag_open.'<a'.$anchor_class.'href="'.site_url($page_url.'/'.$i).'">'.$i.'</a>'.$this->num_tag_close;
  123. }
  124. }
  125. //下一页
  126. if($page_num<$pages)
  127. {
  128. $n=$page_num+1;
  129. $output.=$this->next_tag_open.'<a'.$anchor_class.'href="'.site_url($page_url.'/'.$n).'">下一页</a>'.$this->next_tag_close;
  130. }
  131. //末页
  132. if($page_num<$pages)
  133. {
  134. $output.=$this->last_tag_open.'<a'.$anchor_class.'href="'.site_url($page_url.'/'.$pages).'">末页</a>'.$this->last_tag_close;
  135. }
  136. $output.=$this->full_tag_close;
  137. return$output;
  138. }
  139. }
  140. </span>
控制器里调用
  1. <spanstyle="font-size:16px;">$config['page_url']
  2. ='about/science';
  3. $config['page_size']=$pagesize;
  4. $config['rows_num']=$num_rows;
  5. $config['page_num']=$page;
  6. $this->load->library('Custom_pagination');
  7. $this->custom_pagination->init($config);
  8. echo$this->custom_pagination->create_links();</span>




  1. <?php
  2. classpage{
  3. public$page;//当前页
  4. public$pagenum;//页数
  5. public$pagesize;//每页显示条数
  6. publicfunction__construct($count,$pagesize){
  7. $this->pagenum=ceil($count/$pagesize);
  8. $this->pagesize=$pagesize;
  9. $this->page=(isset($_GET['p'])&&$_GET['p']>0)?intval($_GET['p']):1;
  10. }
  11. /**
  12. *获得url后面GET传递的参数
  13. */
  14. publicfunctiongetUrl(){
  15. $url='index.php?'.http_build_query($_GET);
  16. $url=preg_replace('/[?,&]p=(\w)+/','',$url);
  17. $url.=(strpos($url,"?")===false)?'?':'&';
  18. return$url;
  19. }
  20. /**
  21. *获得分页HTML
  22. */
  23. publicfunctiongetPage(){
  24. $url=$this->getUrl();
  25. $start=$this->page-5;
  26. $start=$start>0?$start:1;
  27. $end=$start+9;
  28. $end=$end<$this->pagenum?$end:$this->pagenum;
  29. $pagestr='';
  30. if($this->page>5){
  31. $pagestr="<ahref=".$url."p=1".">首页</a>";
  32. }
  33. if($this->page!=1){
  34. $pagestr.="<ahref=".$url."p=".($this->page-1).">上一页</a>";
  35. }
  36. for($i=$start;$i<=$end;$i++){
  37. $pagestr.="<ahref=".$url."p=".$i.">".$i."</a>";
  38. }
  39. if($this->page!=$this->pagenum){
  40. $pagestr.="<ahref=".$url."p=".($this->page+1).">下一页</a>";
  41. }
  42. if($this->page+5<$this->pagenum){
  43. $pagestr.="<ahref=".$url."p=".$this->pagenum.">尾页</a>";
  44. }
  45. return$pagestr;
  46. }
  47. }
  48. //测试代码
  49. $page=newpage(100,10);
  50. $str=$page->getPage();
  51. echo$str;
  52. ?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值