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 相关文章推荐
mysql5详细安装教程
Jan 15 PHP
让PHP支持页面回退的两种方法
Jan 10 PHP
PHP 类型转换函数intval
Jun 20 PHP
PHP在字符断点处截断文字的实现代码
Apr 21 PHP
php高级编程-函数-郑阿奇
Jul 04 PHP
PHP贪婪算法解决0-1背包问题实例分析
Mar 23 PHP
浅谈使用PHP开发微信支付的流程
Oct 04 PHP
PHP几个实用自定义函数小结
Jan 25 PHP
PHP获取用户访问IP地址的5种方法
May 16 PHP
PHP 7.0新增加的特性介绍
Jun 08 PHP
PHP设计模式之观察者模式定义与用法分析
Apr 04 PHP
解决Laravel 不能创建 migration 的问题
Oct 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
AJAX for PHP简单表数据查询实例
2007/01/02 PHP
PHP 缓存实现代码及详细注释
2010/05/16 PHP
调整优化您的LAMP应用程序的5种简单方法
2011/06/26 PHP
PHP简洁函数小结
2011/08/12 PHP
PHP提示Cannot modify header information - headers already sent by解决方法
2014/09/22 PHP
PHP has encountered a Stack overflow问题解决方法
2014/11/03 PHP
PHP实现采集抓取淘宝网单个商品信息
2015/01/08 PHP
WIN8.1下搭建PHP5.6环境
2015/04/29 PHP
谈谈php对接芝麻信用踩的坑
2016/12/01 PHP
JavaScript 常用函数
2009/12/30 Javascript
js的写法基础分析
2011/01/17 Javascript
jQuery实现防止提交按钮被双击的方法
2015/03/24 Javascript
JavaScript操作URL的相关内容集锦
2015/10/29 Javascript
详解照片瀑布流效果(js,jquery分别实现与知识点总结)
2017/01/01 Javascript
jQuery实现级联下拉框实战(5)
2017/02/08 Javascript
js+canvas实现动态吃豆人效果
2017/03/22 Javascript
AjaxUpLoad.js实现文件上传
2018/03/05 Javascript
Vue快速实现通用表单验证的示例代码
2020/01/09 Javascript
Vue3.0的优化总结
2020/10/16 Javascript
[55:02]2014 DOTA2国际邀请赛中国区预选赛 HGT VS Orenda
2014/05/21 DOTA
python实现网站的模拟登录
2016/01/04 Python
Windows环境下python环境安装使用图文教程
2018/03/13 Python
Python常用模块之requests模块用法分析
2019/05/15 Python
使用Python将Exception异常错误堆栈信息写入日志文件
2020/04/08 Python
python+adb+monkey实现Rom稳定性测试详解
2020/04/23 Python
Python如何使用ConfigParser读取配置文件
2020/11/12 Python
举例讲解Python装饰器
2020/12/24 Python
用React加CSS3实现微信拆红包动画效果
2017/03/13 HTML / CSS
html5自带表单验证体验优化及提示气泡修改功能
2017/09/12 HTML / CSS
小学教师自我鉴定
2013/11/07 职场文书
党员承诺书范文
2014/05/19 职场文书
2014年政府采购工作总结
2014/12/09 职场文书
个人党性锻炼总结
2015/03/05 职场文书
2016年区委书记抓基层党建工作公开承诺书
2016/03/25 职场文书
Jupyter notebook 不自动弹出网页的解决方案
2021/05/21 Python
vue router 动态路由清除方式
2022/05/25 Vue.js