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 多线程上下文中安全写文件实现代码
Dec 28 PHP
php设计模式 DAO(数据访问对象模式)
Jun 26 PHP
php 模拟POST提交的2种方法详解
Jun 17 PHP
php实现加减法验证码代码
Feb 14 PHP
php+MySQL判断update语句是否执行成功的方法
Aug 28 PHP
PHP批量去除BOM头代码分享
Jun 26 PHP
iOS10推送通知开发教程
Sep 19 PHP
总结的一些PHP开发中的tips(必看篇)
Mar 24 PHP
php生成二维码不保存服务器还有下载功能的实现代码
Aug 09 PHP
PHP常用正则表达式精选(推荐)
May 28 PHP
PHP上传图片到数据库并显示的实例代码
Dec 20 PHP
使用Entrust扩展包在laravel 中实现RBAC的功能
Mar 16 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
杏林同学录(九)
2006/10/09 PHP
php 生成静态页面的办法与实现代码详细版
2010/02/15 PHP
基于php解决json_encode中文UNICODE转码问题
2020/11/10 PHP
BOOM vs RR BO5 第二场 2.14
2021/03/10 DOTA
浅析js设置控件的readonly与enabled属性问题
2013/12/25 Javascript
页面向下滚动ajax获取数据的实现方法(兼容手机)
2016/05/24 Javascript
又一款js时钟!transform实现时钟效果
2016/08/15 Javascript
用JS动态设置CSS样式常见方法小结(推荐)
2016/11/10 Javascript
js实现的xml对象转json功能示例
2016/12/24 Javascript
简单快速的实现js计算器功能
2017/08/17 Javascript
websocket4.0+typescript 实现热更新的方法
2019/08/14 Javascript
简单使用webpack打包文件的实现
2019/10/29 Javascript
[00:21]DOTA2亚洲邀请赛 Logo演绎
2015/02/07 DOTA
Python命名空间详解
2014/08/18 Python
python3中int(整型)的使用教程
2017/03/23 Python
python消除序列的重复值并保持顺序不变的实例
2018/11/08 Python
浅谈Pycharm调用同级目录下的py脚本bug
2018/12/03 Python
Python开发网站目录扫描器的实现
2019/02/21 Python
Python图像处理库PIL的ImageEnhance模块使用介绍
2020/02/26 Python
Python基于pandas绘制散点图矩阵代码实例
2020/06/04 Python
Pytorch 高效使用GPU的操作
2020/06/27 Python
解决tensorflow模型压缩的问题_踩坑无数,总算搞定
2021/03/02 Python
HTML5 form标签之解放表单验证、增加文件上传、集成拖放的使用方法
2013/04/24 HTML / CSS
美国指甲油品牌:Deco Miami
2017/01/30 全球购物
Tory Burch英国官方网站:美国时尚生活品牌
2017/12/06 全球购物
英国床和浴室商场:Bed & Bath Emporium
2018/05/20 全球购物
Viking Direct荷兰:购买办公用品
2019/06/20 全球购物
DBA的职责都有哪些
2012/05/16 面试题
回门宴答谢词
2014/01/13 职场文书
酒店总经理欢迎词
2014/01/15 职场文书
将相和教学反思
2014/02/04 职场文书
给校长的建议书200字
2014/05/16 职场文书
上班迟到检讨书范文300字
2014/11/02 职场文书
城镇居民医疗保险工作总结
2015/08/10 职场文书
python 实现图片特效处理
2022/04/03 Python
SQL试题 使用窗口函数选出连续3天登录的用户
2022/04/24 Oracle