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. VisualGDB系列1:VisualGDB总体概述

    根据VisualGDB官网(https://visualgdb.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指正. 本文总体介绍VisualGDB能给你带来 ...

  2. Python-socket发送文件并解决粘包问题

    服务器端要先根据客户端要下载的文件进行判断是否存在,还要根据文件大小来进行传送,最后还要比对文件的md5值来判断传送的文件是否正确,通过判断剩余字节来解决粘包问题 服务器端 # -*- coding: ...

  3. 解决启动SQL Server Management Studio 17时报Cannot find one of more components...的问题

    刚装好SSMS 17.1准备体验,弹出: 一番搜索,普遍办法都是安装VS2015独立shell.删除某个注册表项什么的,没用,首先这个shell我是装了的,然后也没有那个注册表项.我自己尝试过重装sh ...

  4. 关于Confusion Matrix

    from sklearn.metrics import confusion_matrixy_true = [2, 0, 2, 2, 0, 1]y_pred = [0, 0, 2, 2, 0, 2]pr ...

  5. 关于Windows文件读写_暗涌_新浪博客

    关于Windows文件读写_暗涌_新浪博客     这几天在研究怎么才能加快windows文件读写速度,搜了很多文章,MSDN也看了不少.稍微给大家分享一下.     限制windows文件读写速度的 ...

  6. js页面跳转常用的几种方式(转)

    js页面跳转常用的几种方式 转载  2010-11-25   作者:    我要评论 js实现页面跳转的几种方式,需要的朋友可以参考下. 第一种: 复制代码代码如下: <script langu ...

  7. hadoop2.6.0完全分布式部署

    这里是hadoop最小的配置,也就是修改最少量的东西让hadoop跑起来. 系统是 Centos6.7 64位, hadoop是2.6.0,虚拟机是VMWare WorkStation 假设虚拟机启动 ...

  8. p2590&bzoj1036 树的统计

    传送门(洛谷) 传送门(bzoj) 题目 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值 ...

  9. 1.如何绕过WAF(Web应用防火墙)

    一:大小写转换法: 看字面就知道是什么意思了,就是把大写的小写,小写的大写.比如: SQL:sEleCt vERsIoN(); ‍‍XSS:)</script> 出现原因:在waf里,使用 ...

  10. HTML中的ID不能以数字开头

    最近在学习网页制作,发现ID在w3c规范里是不能以一个数字开头的,chrome浏览器是可以,firefox就不能使用数字开头了,其它浏览器未测试. 记录一下! W3C规范链接:http://www.w ...