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 相关文章推荐
用Flash图形化数据(一)
Oct 09 PHP
利用 window_onload 实现select默认选择
Oct 09 PHP
php面向对象全攻略 (十四) php5接口技术
Sep 30 PHP
深入解析fsockopen与pfsockopen的区别
Jul 05 PHP
一漂亮的PHP图片验证码实例
Mar 21 PHP
浅谈php正则表达式中的非贪婪模式匹配的使用
Nov 25 PHP
php实现httpRequest的方法
Mar 13 PHP
PHP 实现公历日期与农历日期的互转换
Sep 13 PHP
php单元测试phpunit入门实例教程
Nov 17 PHP
PHP实现的折半查找算法示例
Dec 19 PHP
Laravel配合jwt使用的方法实例
Oct 25 PHP
PHP 使用位运算实现四则运算的代码
Mar 09 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格式化时间戳显示友好的时间实现思路及代码
2014/10/23 PHP
php运行提示:Fatal error Allowed memory size内存不足的解决方法
2014/12/17 PHP
PHP准确取得服务器IP地址的方法
2015/06/02 PHP
PHP模板引擎Smarty中变量的使用方法示例
2016/04/11 PHP
Yii框架中jquery表单验证插件用法示例
2016/10/18 PHP
ThinkPHP3.2.3框架邮件发送功能图文实例详解
2019/04/23 PHP
33种Javascript 表格排序控件收集
2009/12/03 Javascript
基于jquery的内容循环滚动小模块(仿新浪微博未登录首页滚动微博显示)
2011/03/28 Javascript
将HTMLCollection/NodeList/伪数组转换成数组的实现方法
2011/06/20 Javascript
jQuery之end()和pushStack()使用介绍
2012/02/07 Javascript
Node.js事件驱动
2015/06/18 Javascript
jquery转盘抽奖功能实现
2015/11/13 Javascript
前端设计师们最常用的JS代码汇总
2016/09/25 Javascript
基于jQuery实现的Ajax 验证用户名唯一性实例代码
2017/06/28 jQuery
基于JS实现带动画效果的流程进度条
2018/06/01 Javascript
关于RxJS Subject的学习笔记
2018/12/05 Javascript
jQuery each和js forEach用法比较
2019/02/27 jQuery
配置node服务器并且链接微信公众号接口配置步骤详解
2019/06/21 Javascript
vue实现简单的日历效果
2020/09/24 Javascript
js点击事件的执行过程实例分析【冒泡与捕获】
2020/04/11 Javascript
如何通过vscode运行调试javascript代码
2020/07/24 Javascript
python进阶教程之模块(module)介绍
2014/08/30 Python
在Pandas中DataFrame数据合并,连接(concat,merge,join)的实例
2019/01/29 Python
使用python实现离散时间傅里叶变换的方法
2019/09/02 Python
利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)
2020/09/04 Python
Css3+Js制作漂亮时钟(附源码)
2013/04/24 HTML / CSS
Audible英国:有声读物,30天免费试用
2019/10/16 全球购物
介绍一下Make? 为什么使用make
2013/12/08 面试题
中医药大学市场营销专业自荐信
2013/09/29 职场文书
《唯一的听众》教学反思
2014/02/20 职场文书
经济管理自荐书
2014/06/09 职场文书
学校端午节活动总结
2015/02/11 职场文书
2016年八一建军节活动总结
2016/04/05 职场文书
诚信高考倡议书
2019/06/24 职场文书
解决Golang time.Parse和time.Format的时区问题
2021/04/29 Golang
分析Python list操作为什么会错误
2021/11/17 Python