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 相关文章推荐
在Windows版的PHP中使用ADO
Oct 09 PHP
php实现的在线人员函数库
Apr 09 PHP
php类声明和php类使用方法示例分享
Mar 29 PHP
codeigniter上传图片不能正确识别图片类型问题解决方法
Jul 25 PHP
php实现图片上传、剪切功能
May 07 PHP
微信网页授权(OAuth2.0) PHP 源码简单实现
Aug 29 PHP
PHP接收App端发送文件流的方法
Sep 23 PHP
thinkphp Apache配置重启Apache1 restart 出错解决办法
Feb 15 PHP
Laravel框架实现的批量删除功能示例
Jan 16 PHP
PDO::rollBack讲解
Jan 29 PHP
asp函数split()对应php函数explode()
Feb 27 PHP
laravel5.1框架基础之Blade模板继承简单使用方法分析
Sep 05 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中使用SimpleXML检查XML文件结构实例
2015/01/07 PHP
php遍历树的常用方法汇总
2015/06/18 PHP
PHP ajax+jQuery 实现批量删除功能实例代码小结
2018/12/06 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
使用新的消息弹出框blackbirdjs
2008/10/16 Javascript
Juqery Html(),append()等方法的Bug解决方法
2010/12/13 Javascript
Javascript学习笔记一 之 数据类型
2010/12/15 Javascript
JS编程小常识很有用
2012/11/26 Javascript
jquery购物车实时结算特效实现思路
2013/09/23 Javascript
JavaScript来实现打开链接页面的简单实例
2016/06/02 Javascript
BootStrap实现鼠标悬停下拉列表功能
2017/02/17 Javascript
字太多用...代替的方法(两种)
2017/03/15 Javascript
微信小程序-滚动消息通知的实例代码
2017/08/03 Javascript
微信小程序使用swiper组件实现类3D轮播图
2018/08/29 Javascript
vue观察模式浅析
2018/09/25 Javascript
jQuery动态操作表单示例【基于table表格】
2018/12/06 jQuery
vue keep-alive实现多组件嵌套中个别组件存活不销毁的操作
2020/10/30 Javascript
[02:14]DOTA2英雄基础教程 修补匠
2013/12/23 DOTA
python处理中文编码和判断编码示例
2014/02/26 Python
Python的time模块中的常用方法整理
2015/06/18 Python
Python实现微信中找回好友、群聊用户撤回的消息功能示例
2019/08/23 Python
python3 实现调用串口功能
2019/12/26 Python
JetBrains PyCharm(Community版本)的下载、安装和初步使用图文教程详解
2020/03/19 Python
python实现移动木板小游戏
2020/10/09 Python
详解tensorflow之过拟合问题实战
2020/11/01 Python
anaconda升级sklearn版本的实现方法
2021/02/22 Python
如何用H5实现一个触屏版的轮播器的实例
2017/01/09 HTML / CSS
Tech21美国/加拿大:英国NO.1防摔保护壳品牌
2018/01/20 全球购物
英国手机零售商:Carphone Warehouse
2018/06/06 全球购物
西部世纪面试题
2014/12/05 面试题
学生实习推荐信范文
2013/11/26 职场文书
计算机大学生职业生涯规划书范文
2014/02/19 职场文书
党员教师四风问题整改措施思想汇报
2014/10/08 职场文书
个人公司授权委托书范本
2014/10/12 职场文书
2014年幼儿园教研工作总结
2014/12/04 职场文书
HTML+CSS+JS实现图片的瀑布流布局的示例代码
2021/04/22 HTML / CSS