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 如何向 MySQL 发送数据
Oct 09 PHP
php下目前为目最全的CURL中文说明
Aug 01 PHP
将word转化为swf 如同百度文库般阅读实现思路及代码
Aug 09 PHP
thinkphp模板输出技巧汇总
Nov 24 PHP
PHP中调用C/C++制作的动态链接库的教程
Mar 10 PHP
PHP的Yii框架中使用数据库的配置和SQL操作实例教程
Mar 17 PHP
thinkPHP5框架auth权限控制类与用法示例
Jun 12 PHP
thinkPHP5.0框架事务处理操作简单示例
Sep 07 PHP
PHP设计模式之简单工厂和工厂模式实例分析
Mar 25 PHP
Laravel 之url参数,获取路由参数的例子
Oct 21 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
Feb 29 PHP
PHP中国际化的字符串排序和比较对象详解
Aug 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
ajax实现无刷新分页(php)
2010/07/18 PHP
PHP压缩html网页代码(清除空格,换行符,制表符,注释标记)
2012/04/02 PHP
php中 $$str 中 &quot;$$&quot; 的详解
2015/07/06 PHP
PHP类相关知识点实例总结
2016/09/28 PHP
php提交表单时保留多个空格及换行的文本样式的方法
2017/06/20 PHP
PHP模糊查询技术实例分析【附源码下载】
2019/03/07 PHP
在Laravel 的 Blade 模版中实现定义变量
2019/10/14 PHP
DOM 脚本编程中的兄弟节点
2009/10/31 Javascript
Jquery + Ajax调用webService实例代码(asp.net)
2010/08/27 Javascript
javascript之bind使用介绍
2011/10/09 Javascript
当鼠标移动时出现特效的JQuery代码
2013/11/08 Javascript
JavaScript设计模式之建造者模式介绍
2014/12/28 Javascript
JS控制表格实现一条光线流动分割行的方法
2015/03/09 Javascript
Prototype框架详解
2015/11/25 Javascript
通过JS获取Request.QueryString()参数的值实现方法
2016/09/27 Javascript
ionic实现底部分享功能
2017/05/11 Javascript
vue中的event bus非父子组件通信解析
2017/10/27 Javascript
Vue不能检测到Object/Array更新的情况的解决
2018/06/26 Javascript
vue组件之间通信实例总结(点赞功能)
2018/12/05 Javascript
实例讲解v-if和v-show的区别
2019/01/31 Javascript
常见的浏览器存储方式(cookie、localStorage、sessionStorage)
2019/05/07 Javascript
eslint 的三大通用规则详解
2019/05/16 Javascript
JS关闭子窗口并且刷新上一个窗口的实现示例
2020/03/10 Javascript
如何在 Vue 中使用 JSX
2021/02/14 Vue.js
9种python web 程序的部署方式小结
2014/06/30 Python
python实现批量改文件名称的方法
2015/05/25 Python
Python和Java进行DES加密和解密的实例
2018/01/09 Python
python如何创建TCP服务端和客户端
2018/08/26 Python
Django密码系统实现过程详解
2019/07/19 Python
Django中使用Json返回数据的实现方法
2020/06/03 Python
艺术系应届生的自我评价
2013/10/19 职场文书
学雷锋宣传标语
2014/06/25 职场文书
2016党员干部廉洁自律心得体会
2016/01/13 职场文书
小学家庭教育心得体会
2016/01/14 职场文书
《圆的周长》教学反思
2016/02/17 职场文书
V Rising 服务器搭建图文教程
2022/06/16 Servers