PHP实现简单实用的分页类代码


Posted in PHP onApril 08, 2016

本文实例讲述了PHP实现简单实用的分页类。分享给大家供大家参考,具体如下:

<?php
  class Page {
     private $total;   //总记录
     private $pagesize;  //每页显示多少条
     private $limit;     //limit
     private $page;      //当前页码
     private $pagenum;   //总页码
     private $url;      //地址
     private $bothnum;   //两边保持数字分页的量
   //构造方法初始化
   public function __construct($_total, $_pagesize) {
     $this->total = $_total ? $_total : 1;
     $this->pagesize = $_pagesize;
     $this->pagenum = ceil($this->total / $this->pagesize);
     $this->page = $this->setPage();
     $this->limit = "LIMIT ".($this->page-1)*$this->pagesize.",$this->pagesize";
     $this->url = $this->setUrl();
     $this->bothnum = 2;
   }
   //拦截器
   private function __get($_key) {
     return $this->$_key;
   }
   //获取当前页码
   private function setPage() {
     if (!empty($_GET['page'])) {
        if ($_GET['page'] > 0) {
          if ($_GET['page'] > $this->pagenum) {
             return $this->pagenum;
          } else {
             return $_GET['page'];
          }
        } else {
          return 1;
        }
     } else {
        return 1;
     }
   }
   //获取地址
   private function setUrl() {
     $_url = $_SERVER["REQUEST_URI"];
     $_par = parse_url($_url);
     if (isset($_par['query'])) {
        parse_str($_par['query'],$_query);
        unset($_query['page']);
        $_url = $_par['path'].'?'.http_build_query($_query);
     }
     return $_url;
   }   //数字目录
   private function pageList() {
     for ($i=$this->bothnum;$i>=1;$i--) {
      $_page = $this->page-$i;
      if ($_page < 1) continue;
        $_pagelist .= ' <a href="'.$this->url.'&page='.$_page.'">'.$_page.'</a> ';
     }
     $_pagelist .= ' <span class="me">'.$this->page.'</span> ';
     for ($i=1;$i<=$this->bothnum;$i++) {
      $_page = $this->page+$i;
        if ($_page > $this->pagenum) break;
        $_pagelist .= ' <a href="'.$this->url.'&page='.$_page.'">'.$_page.'</a> ';
     }
     return $_pagelist;
   }
   //首页
   private function first() {
     if ($this->page > $this->bothnum+1) {
        return ' <a href="'.$this->url.'">1</a> ...';
     }
   }
   //上一页
   private function prev() {
     if ($this->page == 1) {
        return '<span class="disabled">上一页</span>';
     }
     return ' <a href="'.$this->url.'&page='.($this->page-1).'">上一页</a> ';
   }
   //下一页
   private function next() {
     if ($this->page == $this->pagenum) {
        return '<span class="disabled">下一页</span>';
     }
     return ' <a href="'.$this->url.'&page='.($this->page+1).'">下一页</a> ';
   }
   //尾页
   private function last() {
     if ($this->pagenum - $this->page > $this->bothnum) {
        return ' ...<a href="'.$this->url.'&page='.$this->pagenum.'">'.$this->pagenum.'</a> ';
     }
   }
   //分页信息
   public function showpage() {
     $_page .= $this->first();
     $_page .= $this->pageList();
     $_page .= $this->last();
     $_page .= $this->prev();
     $_page .= $this->next();
     return $_page;
   }
 }
?>

分页样式如下图所示:

PHP实现简单实用的分页类代码

使用说明:

<?php
  $_page = new Page($_total,$_pagesize);
  //其中 $_total 是数据集的总条数,$_pagesize 是每页显示的数量.
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP开发文件系统实例讲解
Oct 09 PHP
改进的IP计数器
Oct 09 PHP
php download.php实现代码 跳转到下载文件(response.redirect)
Aug 26 PHP
PHP学习笔记 (1) 环境配置与代码调试
Jun 19 PHP
mcrypt启用 加密以及解密过程详细解析
Aug 07 PHP
PHP字符串中特殊符号的过滤方法介绍
Feb 18 PHP
PHP的反射类ReflectionClass、ReflectionMethod使用实例
Aug 05 PHP
PHP实现将textarea的值根据回车换行拆分至数组
Jun 10 PHP
PHP基于单例模式实现的数据库操作基类
Jan 15 PHP
PHP实现冒泡排序的简单实例
May 26 PHP
php array_merge_recursive 数组合并
Oct 26 PHP
PHP实现将base64编码字符串转换成图片示例
Jun 22 PHP
PHP文件上传类实例详解
Apr 08 #PHP
PHP实现基于mysqli的Model基类完整实例
Apr 08 #PHP
php生成带logo二维码方法小结
Apr 08 #PHP
PHP使用PDO操作数据库的乱码问题解决方法
Apr 08 #PHP
PHP中__autoload和Smarty冲突的简单解决方法
Apr 08 #PHP
初识ThinkPHP控制器
Apr 07 #PHP
PHP中PDO的事务处理分析
Apr 07 #PHP
You might like
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
2020/04/05 PHP
js 替换功能函数,用正则表达式解决,js的全部替换
2010/12/08 Javascript
JavaScript中变量提升 Hoisting
2012/07/03 Javascript
jQuery cdn使用介绍
2013/05/08 Javascript
JQuery EasyUI 日期控件如何控制日期选择区间
2014/05/05 Javascript
让JavaScript和其它资源并发下载的方法
2014/10/16 Javascript
JS+CSS实现带关闭按钮DIV弹出窗口的方法
2015/02/27 Javascript
JavaScript对象数组的排序处理方法
2015/10/21 Javascript
apply和call方法定义及apply和call方法的区别
2015/11/15 Javascript
jQuery Validate初步体验(二)
2015/12/12 Javascript
微信小程序 页面跳转传递值几种方法详解
2017/01/12 Javascript
layui的面包屑或者表单不显示的解决方法
2019/09/05 Javascript
python ip正则式
2009/05/07 Python
python使用正则表达式提取网页URL的方法
2015/05/26 Python
Python Web框架Tornado运行和部署
2020/10/19 Python
Python编写通讯录通过数据库存储实现模糊查询功能
2019/07/18 Python
详解numpy.meshgrid()方法使用
2019/08/01 Python
django restframework serializer 增加自定义字段操作
2020/07/15 Python
利用Python实现字幕挂载(把字幕文件与视频合并)思路详解
2020/10/21 Python
简单介绍CSS3中Media Query的使用
2015/07/07 HTML / CSS
css3中仿放大镜效果的几种方式原理解析
2020/12/03 HTML / CSS
html5 跨文档消息传输示例探讨
2013/04/01 HTML / CSS
Stefania Mode英国:奢华设计师和时尚服装
2017/10/23 全球购物
安德玛加拿大官网:Under Armour加拿大
2019/10/02 全球购物
在阿尔卑斯山或希腊度过快乐假期:Alpine Elements
2019/12/28 全球购物
武汉东之林科技有限公司机试
2013/09/17 面试题
什么是测试驱动开发(TDD)
2012/02/15 面试题
求职毕业生自荐书
2014/02/08 职场文书
2014党员干部四风问题对照检查材料思想汇报
2014/09/24 职场文书
单位法人授权委托书范本
2014/10/09 职场文书
2014年机关党委工作总结
2014/12/11 职场文书
客户答谢会致辞
2015/01/20 职场文书
优秀员工自荐书
2015/03/06 职场文书
七年级作文之《我和我的祖国》观后感作文
2019/10/18 职场文书
python基础之//、/与%的区别详解
2022/06/10 Python
教你nginx跳转配置的四种方式
2022/07/07 Servers