1. <span style="font-size:16px;">/**
  2. *
  3. * 关于 页码有效性的判断需要加在 控制器中判断,即当页码数<1或者>总页数
  4. *
  5. */
  6. class Custom_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. public function __construct($params = array())
  32. {
  33. if (count($params) > 0)
  34. {
  35. $this->init($params);
  36. }
  37. }
  38. function init($params = array()) //初始化数据
  39. {
  40. if (count($params) > 0)
  41. {
  42. foreach ($params as $key => $val)
  43. {
  44. if (isset($this->$key))
  45. {
  46. $this->$key = $val;
  47. }
  48. }
  49. }
  50. }
  51. function create_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 == 0 OR $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. {   //current page
  121. $output .= $this->cur_tag_open.'<span '.$current_class.' >'.$i.'</span>'.$this->cur_tag_close;
  122. }else if($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. <span style="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. class page{
  3. public $page; //当前页
  4. public $pagenum;  // 页数
  5. public $pagesize;  // 每页显示条数
  6. public function __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. public function getUrl(){
  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. public function getPage(){
  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 = "<a href=".$url."p=1".">首页</a> ";
  32. }
  33. if($this->page!=1){
  34. $pagestr.= "<a href=".$url."p=".($this->page-1).">上一页</a>";
  35. }
  36. for($i=$start;$i<=$end;$i++){
  37. $pagestr.= "<a href=".$url."p=".$i.">".$i."</a>  ";
  38. }
  39. if($this->page!=$this->pagenum){
  40. $pagestr.="<a href=".$url."p=".($this->page+1).">下一页</a>";
  41. }
  42. if($this->page+5<$this->pagenum){
  43. $pagestr.="<a href=".$url."p=".$this->pagenum.">尾页</a> ";
  44. }
  45. return $pagestr;
  46. }
  47. }
  48. // 测试代码
  49. $page = new page(100,10);
  50. $str=$page->getPage();
  51. echo $str;
  52. ?>

一个简单的CI分页类的更多相关文章

  1. 一个简单的php分页类代码(转载)

    入门级php分页类 原文地址:http://www.xfcodes.com/php/fenye/3608.htm 时间:2015-12-16 20:52:00来源:网络 php分页类. 复制代码代码如 ...

  2. CI 分页类的使用

    分页本身很简单,无非就是一个 [limit $offset, $length] 的过程. $length 是每页显示的数据量,这个是固定的.要确定的就只有 $offset了. 在CI中的分页类同样要依 ...

  3. 一个重构的js分页类

    // JavaScript Document /**//** * js分页类 * @param iAbsolute 每页显示记录数 * @param sTableId 分页表格属性ID值,为Strin ...

  4. PHP简单漂亮的分页类

    本文介绍一款原生的PHP分页类,分页样式有点类似bootstrap. <?php /* * ********************************************* * @类名 ...

  5. THinkPHP简单漂亮的分页类 DownLoad

    PHP include_once("config.php"); require_once('page.class.php'); //分页类 $showrow = 10; //一页显 ...

  6. 简单实用的分页类-python

    django自带的分页虽然挺好,但是就想自己弄个通用的 自己写了个分页的类,用的是python,   其他语言改下语法就能用了. #定义好类.class pagemanage: def __init_ ...

  7. 如何用C++封装一个简单的数据流操作类(附源码),从而用于网络上的数据传输和解析?

    历史溯源 由于历史原因,我们目前看到的大部分的网络协议都是基于ASCII码这种纯文本方式,也就是基于字符串的命令行方式,比如HTTP.FTP.POP3.SMTP.Telnet等.早期操作系统UNIX( ...

  8. java使用注解和反射打造一个简单的jdbc工具类

    a simple jdbc tools 如有转载和引用,请注明出处,谢谢 1. 定义我们需要的注解 要想实现对数据库的操作,我们必须知道数据表名以及表中的字段名称以及类型,正如hibernate 使用 ...

  9. 一个简单实现的string类

    为了复习c++知识,简单的实现一个string类,类名为CMyString 环境说明:windows 7 64位 和 CentOS Linux release 7.6.1810 (Core) 开发工具 ...

随机推荐

  1. net start sql server (instance)

    如何启动 SQL Server 实例(net 命令) 其他版本   可以使用 Microsoft Windows net 命令启动 Microsoft SQL Server 服务. 启动 SQL Se ...

  2. linux命令-rpm查询包

    安装了哪些rpm包呢 [root@wangshaojun Packages]# rpm -qa /////查看全部安装的包 [root@wangshaojun Packages]# rpm -qa l ...

  3. ES6之箭头函数中的this

    在讲箭头函数中的this之前我们先介绍一下普通函数中的this.      普通函数中的this: (1)this指向它的直接调用者 (2)默认的,非严格模式下,没找到直接调用者则指向window ( ...

  4. linux-java环境安装以及ssh

    1 下载Java8   http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 2 使用 ...

  5. #410div2D. Mike and distribution

    D. Mike and distribution time limit per test 2 seconds memory limit per test 256 megabytes input sta ...

  6. ubuntu安装wget

    ubuntu安装wget apt-get update apt-get install wget wget --version

  7. Angular14 Angular相关命令

    1 创建相关 1.1 创建项目 ng new 项目名  ->  创建新项目 ng new 项目名 --skip-install  -> 不进行模块安装  ng new 项目名 -si ng ...

  8. 报错:Caused by: org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save(): cn.itcast.bos.domain.base.SubArea

    因为 实体类中的主键 是String类型 不能自动为其分配id  所以需要手动设置在service层   model.setId(UUID.randomUUID().toString());

  9. Linux/Unix 指令使用说明的格式介绍(the Bash Command 'Usage' Syntax)

    Linux/Unix 指令使用说明的格式介绍(the Bash Command 'Usage' Syntax) 摘自    金马的Blog 原文  http://www.lijinma.com/blo ...

  10. 2、Spark基本工作原理与RDD

    一.基本工作原理 1.特点 分布式: 主要是基于内存(少数情况基于磁盘): spark与,MapReduce最大的不同在于迭代式计算: MR分为两个阶段,map和reduce,两个阶段完了我们,job ...