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 相关文章推荐
用PHP写的基于Memcache的Queue实现代码
Nov 27 PHP
关于Iframe如何跨域访问Cookie和Session的解决方法
Apr 15 PHP
input file获得文件根目录简单实现
Apr 26 PHP
PHP生成自定义长度随机字符串的函数分享
May 04 PHP
PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
Jun 12 PHP
php使用post数组的键值创建同名变量并赋值的方法
Apr 03 PHP
php实现二叉树中和为某一值的路径方法
Oct 14 PHP
PHP使用OB缓存实现静态化功能示例
Mar 23 PHP
基于Laravel-admin 后台的自定义页面用法详解
Sep 30 PHP
PHP查找一列有序数组是否包含某值的方法
Feb 07 PHP
用Laravel轻松处理千万级数据的方法实现
Dec 25 PHP
php 文件上传至OSS及删除远程阿里云OSS文件
Jul 04 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
thinkphp浏览历史功能实现方法
2014/10/29 PHP
php提取字符串中网站url地址的方法
2014/12/03 PHP
以实例全面讲解PHP中多进程编程的相关函数的使用
2015/08/18 PHP
php  PATH_SEPARATOR判断当前服务器系统类型实例
2016/10/28 PHP
php unlink()函数使用教程
2018/07/12 PHP
PHP按符号截取字符串的指定部分的实现方法
2018/09/10 PHP
php实现的表单验证类完整示例
2019/08/13 PHP
Laravel实现通过blade模板引擎渲染视图
2019/10/25 PHP
做网页的一些技巧
2007/02/01 Javascript
firefox下input type=&quot;file&quot;的size是多大
2011/10/24 Javascript
javascript for循环从入门到偏门(效率优化+奇特用法)
2012/08/01 Javascript
jQuery查询数据返回object和字符串影响原因是什么
2013/08/09 Javascript
node.js中的events.EventEmitter.listenerCount方法使用说明
2014/12/08 Javascript
jQuery trigger()方法用法介绍
2015/01/13 Javascript
javascript判断css3动画结束 css3动画结束的回调函数
2015/03/10 Javascript
JavaScript操作class和style样式代码详解
2016/02/13 Javascript
AngularJS 自定义指令详解及示例代码
2016/08/17 Javascript
第一次动手实现bootstrap table分页效果
2016/09/22 Javascript
Javascript 实现全屏滚动实例代码
2016/12/31 Javascript
react native带索引的城市列表组件的实例代码
2017/08/08 Javascript
.vue文件 加scoped 样式不起作用的解决方法
2018/05/28 Javascript
vue实例中data使用return包裹的方法
2018/08/27 Javascript
微信小程序从注册账号到上架(图文详解)
2019/07/17 Javascript
对vuex中getters计算过滤操作详解
2019/11/06 Javascript
Python二分查找详解
2015/09/13 Python
Python用zip函数同时遍历多个迭代器示例详解
2016/11/14 Python
关于Python如何避免循环导入问题详解
2017/09/14 Python
PyQt4编程之让状态栏显示信息的方法
2019/06/18 Python
python命令行工具Click快速掌握
2019/07/04 Python
html5 canvas实现给图片添加平铺水印
2019/08/20 HTML / CSS
LN-CC英国:伦敦时尚生活的缩影
2019/09/01 全球购物
专升本自我鉴定
2013/10/10 职场文书
硕士论文致谢范文
2015/05/14 职场文书
2019垃圾分类宣传口号汇总
2019/08/16 职场文书
Mysql实现主从配置和多主多从配置
2021/06/02 MySQL
JS函数式编程实现XDM一
2022/06/16 Javascript