`
moqiang02
  • 浏览: 529640 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
文章分类
社区版块
存档分类
最新评论

一个简单的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. //创建链接开始
  91. ////////////////////////////////////////////////////////
  92. $output=$this->full_tag_open;
  93. $output.=$this->info_tag_open.'共'.$rows_num.'条数据第'.$page_num.'/'.$pages.'页'.$this->info_tag_close;
  94. //首页
  95. if($page_num>1)
  96. {
  97. $output.=$this->first_tag_open.'<a'.$anchor_class.'href="'.site_url($page_url).'">首页</a>'.$this->first_tag_close;
  98. }
  99. //上一页
  100. if($page_num>1)
  101. {
  102. $n=$page_num-1;
  103. $output.=$this->prev_tag_open.'<a'.$anchor_class.'href="'.site_url($page_url.'/'.$n).'">上一页</a>'.$this->prev_tag_close;
  104. }
  105. //pages
  106. for($i=1;$i<=$pages;$i++)
  107. {
  108. $pl=$page_num-$links_num<0?0:$page_num-$links_num;
  109. $pr=$page_num+$links_num>$pages?$pages:$page_num+$links_num;
  110. //判断链接个数是否太少,举例,假设links_num=2,则链接个数不可少于5个,主要是当page_num等于1,2和n,n-1的时候
  111. if($pr<2*$links_num+1)
  112. {
  113. $pr=2*$links_num+1;
  114. }
  115. if($pl>$pages-2*$links_num)
  116. {
  117. $pl=$pages-2*$links_num;
  118. }
  119. if($i==$page_num)
  120. {//currentpage
  121. $output.=$this->cur_tag_open.'<span'.$current_class.'>'.$i.'</span>'.$this->cur_tag_close;
  122. }elseif($i>=$pl&&$i<=$pr)
  123. {
  124. $output.=$this->num_tag_open.'<a'.$anchor_class.'href="'.site_url($page_url.'/'.$i).'">'.$i.'</a>'.$this->num_tag_close;
  125. }
  126. }
  127. //下一页
  128. if($page_num<$pages)
  129. {
  130. $n=$page_num+1;
  131. $output.=$this->next_tag_open.'<a'.$anchor_class.'href="'.site_url($page_url.'/'.$n).'">下一页</a>'.$this->next_tag_close;
  132. }
  133. //末页
  134. if($page_num<$pages)
  135. {
  136. $output.=$this->last_tag_open.'<a'.$anchor_class.'href="'.site_url($page_url.'/'.$pages).'">末页</a>'.$this->last_tag_close;
  137. }
  138. $output.=$this->full_tag_close;
  139. return$output;
  140. }
  141. }
  142. </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. ?>

分享到:
评论

相关推荐

    ci_分页类_pages

    ci分页

    PHP_CI框架分页使用

    PHP_CI框架分页使用, 欢迎大家学习哦哦哦!

    codeigniter分页类的使用

    codeigniter分页类的使用 ...对于codeigniter框架分页类的使用非常的简单,下面通过一个实例来讲解一下这个分类的使用。 首先分页要设计到一个数据库中的记录,所以先建立一个数据表books,字段名及类型介绍如下:

    CI框架简单分页类用法示例

    主要介绍了CI框架简单分页类用法,结合实例形式分析了CI框架简单分页类基本定义与使用方法,需要的朋友可以参考下

    CI实现分页的封装

    在ci中我们做查询,一般要写2条查询语句,但是我在这里封装了一个方法实现了实现2次调用,方便好用,希望大家采纳。谢谢啦

    CI框架学习概要总结

    10.CI框架学习-实例操作查看文章CI分页类使用与自定义与AR类连贯操作 11.CI框架学习-实例操作CI自带验证码使用与如何扩展自定义类库(验证码) 12.CI框架学习-实例操作SESSION类使用与扩展自定义公共类与登陆验证 13...

    BluePage通用分页类助开发者提高开发效率1

    BluePage是一个通用的分页类,它能帮助你更快地完成分页任务。 先看使用例子: http://www.bluessoft.com/project/bluepage/example.php 使用例子1: 以下为引用的内容: include ( "lib/BluePage.class.php" )...

    CI分页类首页、尾页不显示的解决方法

    主要介绍了CI分页类首页、尾页不显示的解决方法,结合实例形式较为详细的分析说明了CI框架分页代码的运行原理与显示首页、尾页的具体方法,需要的朋友可以参考下

    jsf 分页实例jsf 分页实例

    jsf 分页jsf 分页 可直接在myeclipse6.0以上版本运行

    CI基本Model,继承于CI_Model

    这是一个继承于CI的model类,自己写的,有不少问题,等着你修改。 主要是一个简单是数据库注入过滤,一个带分页条件返回,其他的就是增删查改了。

    codeigniter分页

    codeigniter分页

    解析CI的AJAX分页 另类实现方法

    下面进入正题:CI的原生分页类中有一个参数 $config[anchor_class]这个参数是用来设置分页链接的样式的,所以我们可以设置成这样:$config[anchor_class] = “class=ajax_fpage”;然后在view部分这样采用禁止a便签...

    dreamweavercs高级数据记录分页插件

    这是一组数据记录分页插件,基本满足所有形式的分页显示。具体形式如下: 1-10 | 11-20 | 21-30 形式 1 | 2 | 3 | 4 | 5 形式 第一页 - 上一页 - 下一页 - 最后页 形式 以字母索引 A | B | C | D | E | F 形式 ...

    jsp + oracle分页简单实用

    if(strPage==null){//表明在QueryString中没有page这一个参数,此时显示第一页数据 intPage = 1; } else{//将字符串转换成整型 intPage = java.lang.Integer.parseInt(strPage); if(intPage) intPage = 1...

    CI框架(ajax分页,全选,反选,不选,批量删除)完整代码详解

    CodeIgniter 是一个小巧但功能强大的 PHP 框架。这篇文章主要介绍了CI框架(ajax分页,全选,反选,不选,批量删除)完整代码,需要的朋友可以参考下

    CodeIgniter分页类pagination使用方法示例

    本文实例讲述了CodeIgniter分页类pagination使用方法。分享给大家供大家参考,具体如下: controller控制器(application/controller/page.php文件): public function index() { $this-&gt;load-&gt;model ( 'home_...

    Codeigniter(CI)框架分页函数及相关知识

    主要介绍了一个自己封装的Codeigniter(CI)框架的分页函数以及Codeigniter(CI)框架分页类的使用心得,非常简单实用,希望对大家能有所帮助

    codeigniter 项目包含文件上传,验证码,数据库操作,分页处理

    codeigniter 项目包含文件上传,验证码,数据库操作,分页处理

    用CI开发的网上商城系统

    写了一些简单功能,供新手人参考...相册(CI批量上传),登陆,注册(验证码),分页+搜索,购物流程,无限分类,编辑器的整合,省市县三级联动,权限管理,网店的配送方式,支付接口(暂时只做支付宝接口)等等功能。

Global site tag (gtag.js) - Google Analytics