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 相关文章推荐
PHP5中的this,self和parent关键字详解教程
Mar 19 PHP
在任意字符集下正常显示网页的方法二(续)
Apr 01 PHP
php中文字母数字验证码实现代码
Apr 25 PHP
discuz authcode 经典php加密解密函数解析
Jul 12 PHP
php使HTML标签自动补全闭合函数代码
Oct 04 PHP
php生成EAN_13标准条形码实例
Nov 13 PHP
使用GD库生成带阴影文字的图片
Mar 27 PHP
Thinkphp模板标签if和eq的区别和比较实例分析
Jul 01 PHP
php 使用curl模拟登录人人(校内)网的简单实例
Jun 06 PHP
PHP实现执行外部程序的方法详解
Aug 17 PHP
PHP使用PDO、mysqli扩展实现与数据库交互操作详解
Jul 20 PHP
PHP执行普通shell命令流程解析
Aug 24 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
DC动画很好看?新作烂得令人发指,名叫《红色之子》
2020/04/09 欧美动漫
又十个超级有用的PHP代码片段
2015/09/24 PHP
微信公众号实现会员卡领取功能
2017/06/08 PHP
Javascript匿名函数的一种应用 代码封装
2010/06/27 Javascript
IE6/7/8中Option元素未设value时Select将获取空字符串
2011/04/07 Javascript
防止xss和sql注入:JS特殊字符过滤正则
2013/04/18 Javascript
浅析JS刷新框架中的其他页面 &amp;&amp; JS刷新窗口方法汇总
2013/07/08 Javascript
jquery.cookie用法详细解析
2013/12/18 Javascript
浅谈JavaScript中的字符编码转换问题
2015/07/07 Javascript
javascript+ajax实现产品页面加载信息
2015/07/09 Javascript
HTML页面,测试JS对C函数的调用简单实例
2016/08/09 Javascript
JavaScript仿网易选项卡制作代码
2016/10/06 Javascript
自学实现angularjs依赖注入
2016/12/20 Javascript
js实现点击按钮弹出上传文件的窗口
2016/12/23 Javascript
详解angular中如何监控dom渲染完毕
2017/01/03 Javascript
Ionic2调用本地SQlite实例
2017/04/22 Javascript
JS实现的加减乘除四则运算计算器示例
2017/08/09 Javascript
基于ES6 Array.of的用法(实例讲解)
2017/09/05 Javascript
vue2.0设置proxyTable使用axios进行跨域请求的方法
2017/10/19 Javascript
vue 配置多页面应用的示例代码
2018/10/22 Javascript
vue 地图可视化 maptalks 篇实例代码详解
2019/05/21 Javascript
Vue 实现监听窗口关闭事件,并在窗口关闭前发送请求
2020/09/01 Javascript
Vue 打包的静态文件不能直接运行的原因及解决办法
2020/11/19 Vue.js
基于jQuery拖拽事件的封装
2020/11/29 jQuery
python发送arp欺骗攻击代码分析
2014/01/16 Python
Python函数式编程指南(二):从函数开始
2015/06/24 Python
Python实现的生产者、消费者问题完整实例
2018/05/30 Python
详解利用Python scipy.signal.filtfilt() 实现信号滤波
2019/06/05 Python
利用Opencv实现图片的油画特效实例
2021/02/28 Python
HTML5 Geolocation API的正确使用方法
2018/12/04 HTML / CSS
Origins加拿大官网:雅诗兰黛集团高端植物护肤品牌
2017/11/19 全球购物
《桥》教学反思
2014/04/09 职场文书
2014年小学德育工作总结
2014/12/05 职场文书
导游词之新疆尼雅遗址
2019/10/16 职场文书
Spring依赖注入多种类型数据的示例代码
2022/03/31 Java/Android
Android RecyclerView实现九宫格效果
2022/06/28 Java/Android