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+javascript实现二级级联菜单的制作
May 06 PHP
PHP 向右侧拉菜单实现代码,测试使用中
Nov 03 PHP
Fatal error: Call to undefined function curl_init()解决方法
Apr 09 PHP
php实现多张图片上传加水印技巧
Apr 18 PHP
PHP取余函数介绍MOD(x,y)与x%y
May 15 PHP
通过php删除xml文档内容的方法
Jan 23 PHP
[原创]php实现子字符串位置相互对调互换的方法
Jun 02 PHP
php变量与数组相互转换的方法(extract与compact)
Dec 02 PHP
laravel 数据迁移与 Eloquent ORM的实现方法
Apr 12 PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
Oct 15 PHP
PHP 8新特性简介
Aug 18 PHP
phpstudy隐藏index.php的方法
Sep 21 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+SQL 注入攻击的技术实现以及预防办法
2011/01/27 PHP
获取用户Ip地址通用方法与常见安全隐患(HTTP_X_FORWARDED_FOR)
2013/06/01 PHP
zend Framework中的Layout(模块化得布局)详解
2013/06/28 PHP
PHP之十六个魔术方法详细介绍
2016/11/01 PHP
PHP实现截取中文字符串不出现?号的解决方法
2016/12/29 PHP
用ASP将SQL搜索出来的内容导出为TXT的代码
2007/07/27 Javascript
javascript下4个跨浏览器必备的函数
2010/03/07 Javascript
js简单的弹出框有关闭按钮
2014/05/05 Javascript
Jquery的each里用return true或false代替break或continue
2014/05/21 Javascript
js不能获取隐藏的div的宽度只能先显示后获取
2014/09/04 Javascript
JS控制伪元素的方法汇总
2016/04/06 Javascript
微信小程序进行微信支付的步骤昂述
2016/12/01 Javascript
Vue2.0系列之过滤器的使用
2018/03/01 Javascript
Vue 理解之白话 getter/setter详解
2019/04/16 Javascript
如何在项目中使用log4.js的方法步骤
2019/07/16 Javascript
js实现窗口全屏示例详解
2019/09/17 Javascript
JS 设计模式之:单例模式定义与实现方法浅析
2020/05/06 Javascript
[01:02]DOTA2上海特锦赛SHOWOPEN
2016/03/25 DOTA
解决python中使用plot画图,图不显示的问题
2018/07/04 Python
Pycharm之快速定位到某行快捷键的方法
2019/01/20 Python
Python模拟百度自动输入搜索功能的实例
2019/02/14 Python
python datetime中strptime用法详解
2019/08/29 Python
keras和tensorflow使用fit_generator 批次训练操作
2020/07/03 Python
python3实现语音转文字(语音识别)和文字转语音(语音合成)
2020/10/14 Python
Python实现简单的猜单词小游戏
2020/10/28 Python
Pycharm-community-2020.2.3 社区版安装教程图文详解
2020/12/08 Python
凯特方迪化妆品官网:Kat Von D Beauty
2016/11/15 全球购物
四风存在的原因分析
2014/02/11 职场文书
中专生毕业个人鉴定
2014/02/26 职场文书
带病坚持工作事迹
2014/05/03 职场文书
情况说明书格式范文
2014/05/06 职场文书
公关活动策划方案
2014/05/25 职场文书
委托书英文
2015/01/28 职场文书
2019年健身俱乐部的创业计划书
2019/08/26 职场文书
导游词之山东八大关
2019/12/18 职场文书
Java实现房屋出租系统详解
2021/10/05 Java/Android