PHP实现的分页类定义与用法示例


Posted in PHP onJuly 05, 2017

本文实例讲述了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.'" rel="external nofollow" rel="external nofollow" >'.$_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.'" rel="external nofollow" rel="external nofollow" >'.$_page.'</a> ';
     }
     return $_pagelist;
   }
   //首页
   private function first() {
     if ($this->page > $this->bothnum+1) {
        return ' <a href="'.$this->url.'" rel="external nofollow" >1</a> ...';
     }
   }
   //上一页
   private function prev() {
     if ($this->page == 1) {
        return '<span class="disabled">上一页</span>';
     }
     return ' <a href="'.$this->url.'&page='.($this->page-1).'" rel="external nofollow" >上一页</a> ';
   }
   //下一页
   private function next() {
     if ($this->page == $this->pagenum) {
        return '<span class="disabled">下一页</span>';
     }
     return ' <a href="'.$this->url.'&page='.($this->page+1).'" rel="external nofollow" >下一页</a> ';
   }
   //尾页
   private function last() {
     if ($this->pagenum - $this->page > $this->bothnum) {
        return ' ...<a href="'.$this->url.'&page='.$this->pagenum.'" rel="external nofollow" >'.$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 相关文章推荐
xml在joomla表单中的应用详解分享
Jul 19 PHP
解析php多线程下载远程多个文件
Jun 25 PHP
简单实用的.net DataTable导出Execl
Oct 28 PHP
ThinkPHP3.1新特性之字段合法性检测详解
Jun 19 PHP
ThinkPHP权限认证Auth实例详解
Jul 22 PHP
php与flash as3 socket通信传送文件实现代码
Aug 16 PHP
PHP使用header()输出图片缓存实例
Dec 09 PHP
10款PHP开源商城系统汇总介绍
Jul 23 PHP
如何把php5.3版本升级到php5.4或者php5.5
Jul 31 PHP
php+mysql+jquery实现日历签到功能
Feb 27 PHP
thinkPHP中U方法加密传递参数功能示例
May 29 PHP
PDO::errorInfo讲解
Jan 28 PHP
PHP实现的文件上传类与用法详解
Jul 05 #PHP
PHP基于GD库实现的生成图片缩略图函数示例
Jul 05 #PHP
PHP实现的下载远程文件类定义与用法示例
Jul 05 #PHP
详解PHP使用Redis存储session时的一个Warning定位
Jul 05 #PHP
php如何修改SESSION的生存存储时间的实例代码
Jul 05 #PHP
PHP实现根据密码长度显示安全条
Jul 04 #PHP
PHP截取发动短信内容的方法
Jul 04 #PHP
You might like
php中$美元符号与Zen Coding冲突问题解决方法分享
2014/05/28 PHP
php生成rss类用法实例
2015/04/14 PHP
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
2015/06/03 PHP
php实现word转html的方法
2016/01/22 PHP
ThinkPHP删除栏目(实现批量删除栏目)
2017/06/21 PHP
js事件冒泡实例分享(已测试)
2013/04/23 Javascript
Javascript设置对象的ReadOnly属性(示例代码)
2013/12/25 Javascript
再探JavaScript作用域
2014/09/24 Javascript
jquery实现华丽的可折角广告代码
2015/09/02 Javascript
AngularJS基础 ng-mouseover 指令简单示例
2016/08/02 Javascript
JS正则RegExp.test()使用注意事项(不具有重复性)
2016/12/28 Javascript
js仿小米手机上下滑动效果
2017/02/05 Javascript
bootstrap PrintThis打印插件使用详解
2017/02/20 Javascript
nodejs socket实现的服务端和客户端功能示例
2017/06/02 NodeJs
响应式框架Bootstrap栅格系统的实例
2017/12/19 Javascript
简单谈谈CommonsChunkPlugin抽取公共模块
2017/12/31 Javascript
Vue2 模板template的四种写法总结
2018/02/23 Javascript
浅谈Vue数据响应思路之数组
2018/11/06 Javascript
vue.js的双向数据绑定Object.defineProperty方法的神奇之处
2019/01/18 Javascript
javaScript 实现重复输出给定的字符串的常用方法小结
2020/02/20 Javascript
Javascript如何实现扩充基本类型
2020/08/26 Javascript
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
2018/07/27 Python
Django 对IP访问频率进行限制的例子
2019/08/30 Python
python画蝴蝶曲线图的实例
2019/11/21 Python
Django choices下拉列表绑定实例
2020/03/13 Python
夏威夷航空官网:Hawaiian Airlines
2016/09/11 全球购物
雪花秀美国官方网站:韩国著名草本护肤化妆品品牌
2016/10/19 全球购物
什么是网络协议
2016/04/07 面试题
介绍下static、final、abstract区别
2015/01/30 面试题
趣味活动策划方案
2014/02/08 职场文书
2014年高考决心书
2014/03/11 职场文书
评职称个人总结
2015/03/05 职场文书
2015学校师德师风工作总结
2015/04/22 职场文书
阿甘正传观后感
2015/06/01 职场文书
大学生创业计划书常用模板
2019/08/07 职场文书
Django利用AJAX技术实现博文实时搜索
2021/05/06 Python