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中判断字符串是否全是中文或含有中文的实现代码
Sep 16 PHP
php操作xml
Oct 27 PHP
php广告加载类用法实例
Sep 23 PHP
Thinkphp中volist标签mod控制一定记录的换行BUG解决方法
Nov 04 PHP
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
Nov 15 PHP
PHP性能优化大全(php.ini)
May 20 PHP
详解PHP用substr函数截取字符串中的某部分
Dec 03 PHP
thinkphp实现把数据库中的列的值存到下拉框中的方法
Jan 20 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
Sep 16 PHP
PHP中危险的file_put_contents函数详解
Nov 04 PHP
Yii框架使用PHPExcel导出Excel文件的方法分析【改进版】
Jul 24 PHP
如何运行/调试你的PHP代码
Oct 23 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
浅析echo(),print(),print_r(),return之间的区别
2013/11/27 PHP
PHP获取当前完整URL地址的函数
2014/12/21 PHP
UTF-8正则表达式如何匹配汉字
2015/08/03 PHP
腾讯CMEM的PHP扩展编译安装方法
2015/09/25 PHP
2017年最新PHP经典面试题目汇总(上篇)
2017/03/17 PHP
JavaScript 在各个浏览器中执行的耐性
2009/04/06 Javascript
Javascript处理DOM元素事件实现代码
2012/05/23 Javascript
jQuery获取注册信息并提示实现代码
2013/04/21 Javascript
js获取本机的外网/广域网ip地址完整源码
2013/08/12 Javascript
jQuery中click事件的定义和用法
2014/12/20 Javascript
浅谈JavaScript Date日期和时间对象
2014/12/29 Javascript
关于JS中的方法是否加括号的问题
2016/07/27 Javascript
JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
2016/10/09 Javascript
js中的eval()函数把含有转义字符的字符串转换成Object对象的方法
2016/12/02 Javascript
使用vux实现上拉刷新功能遇到的坑
2018/02/08 Javascript
vue-cli安装使用流程步骤详解
2018/11/08 Javascript
Vue项目引进ElementUI组件的方法
2018/11/11 Javascript
JS立即执行函数功能与用法分析
2019/01/15 Javascript
文章或博客自动生成章节目录索引(支持三级)的实现代码
2020/05/10 Javascript
[41:37]DOTA2北京网鱼队选拔赛——冲击职业之路
2015/04/13 DOTA
[01:18:33]Secret vs VGJ.S Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
python实现两个dict合并与计算操作示例
2019/07/01 Python
django mysql数据库及图片上传接口详解
2019/07/18 Python
python GUI库图形界面开发之PyQt5窗口类QMainWindow详细使用方法
2020/02/26 Python
HTML5 Canvas draw方法制作动画效果示例
2013/07/11 HTML / CSS
英国行业制服供应商:Alexandra
2019/09/14 全球购物
成人大专生实习期的自我评价
2013/10/02 职场文书
最新自我评价范文
2013/11/16 职场文书
大学生职业规划范文:象牙塔生活的四年计划
2014/01/14 职场文书
元旦晚会感言
2014/03/12 职场文书
学校食品安全实施方案
2014/06/14 职场文书
护理目标管理责任书
2014/07/25 职场文书
教师反腐倡廉演讲稿
2014/09/03 职场文书
学习党章的体会
2014/11/07 职场文书
七年级思品教学反思
2016/02/20 职场文书
小程序教您怎样你零成本推广获取数万用户的方法
2019/07/30 职场文书