1. <?php
  2. class Page {
  3. private $total;      //总记录
  4. private $pagesize;    //每页显示多少条
  5. private $limit;          //limit
  6. private $page;           //当前页码
  7. private $pagenum;      //总页码
  8. private $url;           //地址
  9. private $bothnum;      //两边保持数字分页的量
  10. //构造方法初始化
  11. public function __construct($_total, $_pagesize) {
  12. $this->total = $_total ? $_total : 1;
  13. $this->pagesize = $_pagesize;
  14. $this->pagenum = ceil($this->total / $this->pagesize);
  15. $this->page = $this->setPage();
  16. $this->limit = "LIMIT ".($this->page-1)*$this->pagesize.",$this->pagesize";
  17. $this->url = $this->setUrl();
  18. $this->bothnum = 2;
  19. }
  20. //拦截器
  21. private function __get($_key) {
  22. return $this->$_key;
  23. }
  24. //获取当前页码
  25. private function setPage() {
  26. if (!empty($_GET['page'])) {
  27. if ($_GET['page'] > 0) {
  28. if ($_GET['page'] > $this->pagenum) {
  29. return $this->pagenum;
  30. } else {
  31. return $_GET['page'];
  32. }
  33. } else {
  34. return 1;
  35. }
  36. } else {
  37. return 1;
  38. }
  39. }
  40. //获取地址
  41. private function setUrl() {
  42. $_url = $_SERVER["REQUEST_URI"];
  43. $_par = parse_url($_url);
  44. if (isset($_par['query'])) {
  45. parse_str($_par['query'],$_query);
  46. unset($_query['page']);
  47. $_url = $_par['path'].'?'.http_build_query($_query);
  48. }
  49. return $_url;
  50. }     //数字目录
  51. private function pageList() {
  52. for ($i=$this->bothnum;$i>=1;$i--) {
  53. $_page = $this->page-$i;
  54. if ($_page < 1) continue;
  55. $_pagelist .= ' <a href="'.$this->url.'&page='.$_page.'">'.$_page.'</a> ';
  56. }
  57. $_pagelist .= ' <span class="me">'.$this->page.'</span> ';
  58. for ($i=1;$i<=$this->bothnum;$i++) {
  59. $_page = $this->page+$i;
  60. if ($_page > $this->pagenum) break;
  61. $_pagelist .= ' <a href="'.$this->url.'&page='.$_page.'">'.$_page.'</a> ';
  62. }
  63. return $_pagelist;
  64. }
  65. //首页
  66. private function first() {
  67. if ($this->page > $this->bothnum+1) {
  68. return ' <a href="'.$this->url.'">1</a> ...';
  69. }
  70. }
  71. //上一页
  72. private function prev() {
  73. if ($this->page == 1) {
  74. return '<span class="disabled">上一页</span>';
  75. }
  76. return ' <a href="'.$this->url.'&page='.($this->page-1).'">上一页</a> ';
  77. }
  78. //下一页
  79. private function next() {
  80. if ($this->page == $this->pagenum) {
  81. return '<span class="disabled">下一页</span>';
  82. }
  83. return ' <a href="'.$this->url.'&page='.($this->page+1).'">下一页</a> ';
  84. }
  85. //尾页
  86. private function last() {
  87. if ($this->pagenum - $this->page > $this->bothnum) {
  88. return ' ...<a href="'.$this->url.'&page='.$this->pagenum.'">'.$this->pagenum.'</a> ';
  89. }
  90. }
  91. //分页信息
  92. public function showpage() {
  93. $_page .= $this->first();
  94. $_page .= $this->pageList();
  95. $_page .= $this->last();
  96. $_page .= $this->prev();
  97. $_page .= $this->next();
  98. return $_page;
  99. }
  100. }
  101. ?>
  使用分页
  1. <?php
  2. $_page = new Page($_total,$_pagesize); //其中 $_total 是数据集的总条数,$_pagesize 是每页显示的数量.
  3. ?>

好用的PHP分页类的更多相关文章

  1. php实现的分页类

    php分页类文件: <?php /** file: page.class.php 完美分页类 Page */ class Page { private $total; //数据表中总记录数 pr ...

  2. asp.net的快捷实用分页类

    KeleyiPager分页类,可以于对列表页进行分页浏览,代码是从HoverTreeCMS项目中COPY的,感觉很不错,使用简单方便,但是功能强大. 在线体验效果:http://cms.hovertr ...

  3. php分页类

    1.需求 学会php分页类的使用 2.参考例子 CI的分页类 3.代码部分 <?php class pagination{ public $pagesize=20; public $pagein ...

  4. PHPCMS V9 分页类的修改教程

    首先,打开 phpcms\libs\functions\global.func.php 这个文件,找到文件第622行的分页函数,复制一下,粘贴到默认分页函数的下面,重新命名后保存.(笔者在此命名为:p ...

  5. php 简单分页类

    /**  file: page.class.php   完美分页类 Page  */ class Page {  private $total;          //数据表中总记录数  privat ...

  6. PHP简单漂亮的分页类

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

  7. ThinkPHP 分页类的使用及退出功能的实现

    /* ThinkPHP设置编码统一: 一.数据库设置为utf8_bin 二.HTML页面设置charset=utf-8,而且检查文档编码格式是否是utf-8.phpDesigner8设置方式为“文件- ...

  8. php部分---一个分页类、用法

    1.分页类 <?php /** file: page.class.php 完美分页类 Page */ class Page { private $total; //数据表中总记录数 privat ...

  9. DedeCMS织梦动态分页类,datalist标签使用实例

    <?php require_once(dirname(__FILE__)."/include/common.inc.php");//载入基础文件 require_once(D ...

  10. webpy分页类 + 上传类

    webpy没有分页类.按照php的思路.自己编了一个.数据库用的是sqlite. class Page(object): '''分页类''' def __init__(self,page_size,d ...

随机推荐

  1. jetty使用教程(嵌入eclipse开发)

    在eclipse下面建一个java project 建立目录结构如下: 二级目录: (备注jetty_test是工程的根目录,etc.lib.webRoot为其二级目录) 到jetty的官方网站(ht ...

  2. Serenity框架官方文档翻译3.2(多租户)

    3.2多租户 在本教程中我们将把Norhwind变成一个多租户应用程序. 这是一个维基百科的多租户软件定义: 软件多租户是指一个软件架构的一个实例软件运行在一个服务器和多个租户.租户是一组共享一个公共 ...

  3. 导出Excel之Epplus使用教程4(其他设置)

    导出Excel之Epplus使用教程1(基本介绍) 导出Excel之Epplus使用教程2(样式设置) 导出Excel之Epplus使用教程3(图表设置) 导出Excel之Epplus使用教程4(其他 ...

  4. 每日一练(写不出心得体会了!毕竟哪有那么多心得好写。然后看github上有很多不错的题目。分享一下!)

    第一题: 问题描述:写一个reverseWords函数 调用方式:console.log(reverseWords('Hello World')); 期望输出:World Hello 第二题: 问题描 ...

  5. .net环境下从PDF文档中抽取Text文本的一些方法汇总

    1.PDFBox的IKVM版本:据我所知,目前只有PDFBox的IKVM版本能比较好地从PDF中提取文本,PDFBOX更多信息请访问http://www.pdbox.org,关于其应用实例,可以参考C ...

  6. 登录DA面板出现:License has expired

    登录DA面板出现:License has expired的解决方法. 首先看是否过期,如果出现The license looks fine on this end. 登录 SSH as root # ...

  7. Borg Maze(MST & bfs)

    Borg Maze Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9220   Accepted: 3087 Descrip ...

  8. HDU 1394 Minimum Inversion Number(线段树求逆序对)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1394 解题报告:给出一个序列,求出这个序列的逆序数,然后依次将第一个数移动到最后一位,求在这个过程中 ...

  9. NGUI 图集生成 图片Sprite 有撕裂边的问题

    修改 Dimensions 的 X 和 Y值进行调整. 在生成图集时 选择Padding 设置1以上 应该不会出现这个问题.

  10. [BZOJ4636]蒟蒻的数列

    [BZOJ4636]蒟蒻的数列 试题描述 蒟蒻DCrusher不仅喜欢玩扑克,还喜欢研究数列 题目描述 DCrusher有一个数列,初始值均为0,他进行N次操作,每次将数列[a,b)这个区间中所有比k ...