PHP实现简单实用的分页类代码


Posted in PHP onApril 08, 2016

本文实例讲述了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.'">'.$_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.'">'.$_page.'</a> ';
     }
     return $_pagelist;
   }
   //首页
   private function first() {
     if ($this->page > $this->bothnum+1) {
        return ' <a href="'.$this->url.'">1</a> ...';
     }
   }
   //上一页
   private function prev() {
     if ($this->page == 1) {
        return '<span class="disabled">上一页</span>';
     }
     return ' <a href="'.$this->url.'&page='.($this->page-1).'">上一页</a> ';
   }
   //下一页
   private function next() {
     if ($this->page == $this->pagenum) {
        return '<span class="disabled">下一页</span>';
     }
     return ' <a href="'.$this->url.'&page='.($this->page+1).'">下一页</a> ';
   }
   //尾页
   private function last() {
     if ($this->pagenum - $this->page > $this->bothnum) {
        return ' ...<a href="'.$this->url.'&page='.$this->pagenum.'">'.$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 相关文章推荐
用cookies来跟踪识别用户
Oct 09 PHP
PHP 配置文件中open_basedir选项作用
Jul 19 PHP
php session和cookie使用说明
Apr 07 PHP
php中实现记住密码自动登录的代码
Mar 02 PHP
destoon设置自定义搜索的方法
Jun 21 PHP
php采用file_get_contents代替使用curl实例
Nov 07 PHP
PHP框架Laravel插件Pagination实现自定义分页
Apr 22 PHP
PHP实现的文件上传类与用法详解
Jul 05 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
Jul 19 PHP
laravel获取不到session的三种解决办法【推荐】
Sep 16 PHP
php往mysql中批量插入数据实例教程
Dec 12 PHP
PHP实现抽奖功能实例代码
Jun 30 PHP
PHP文件上传类实例详解
Apr 08 #PHP
PHP实现基于mysqli的Model基类完整实例
Apr 08 #PHP
php生成带logo二维码方法小结
Apr 08 #PHP
PHP使用PDO操作数据库的乱码问题解决方法
Apr 08 #PHP
PHP中__autoload和Smarty冲突的简单解决方法
Apr 08 #PHP
初识ThinkPHP控制器
Apr 07 #PHP
PHP中PDO的事务处理分析
Apr 07 #PHP
You might like
php木马攻击防御之道
2008/03/24 PHP
PHP实现提取一个图像文件并在浏览器上显示的代码
2012/10/06 PHP
PHP实现Soap通讯的方法
2014/11/03 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
2014/11/22 PHP
Yii实现的多级联动下拉菜单
2016/07/13 PHP
php 微信公众平台开发模式实现多客服的实例代码
2016/11/07 PHP
Jquery右下角抖动、浮动 实例代码(兼容ie6、FF)
2013/08/15 Javascript
js中apply方法的使用详细解析
2013/11/04 Javascript
Jquery遍历checkbox获取选中项value值的方法
2014/02/13 Javascript
Jquery的each里用return true或false代替break或continue
2014/05/21 Javascript
详解AngularJS中的依赖注入机制
2015/06/17 Javascript
JS实现不使用图片仿Windows右键菜单效果代码
2015/10/22 Javascript
jQuery数据检索中根据关键字快速定位GridView指定行的实现方法
2016/06/08 Javascript
深入理解jQuery 事件处理
2016/06/14 Javascript
Nodejs进阶:如何将图片转成datauri嵌入到网页中去实例
2016/11/21 NodeJs
jquery的父、子、兄弟节点查找,节点的子节点循环方法
2016/12/07 Javascript
JavaScript实现二叉树的先序、中序及后序遍历方法详解
2017/10/26 Javascript
如何使用puppet替换文件中的string
2018/12/06 Javascript
vue单应用在ios系统中实现微信分享功能操作
2020/09/07 Javascript
用Python的线程来解决生产者消费问题的示例
2015/04/02 Python
剖析Python的Twisted框架的核心特性
2016/05/25 Python
解决python3运行selenium下HTMLTestRunner报错的问题
2018/12/27 Python
深入解析Python小白学习【操作列表】
2019/03/23 Python
使用Python制作一个打字训练小工具
2019/10/01 Python
VScode连接远程服务器上的jupyter notebook的实现
2020/04/23 Python
python适合做数据挖掘吗
2020/06/16 Python
阿玛尼美妆英国官网:Giorgio Armani Beauty英国
2019/03/28 全球购物
美体小铺奥地利官方网站:The Body Shop奥地利
2019/04/11 全球购物
什么是Smarty变量操作符?如何使用Smarty变量操作符
2014/07/18 面试题
初中女生自我鉴定
2013/12/19 职场文书
《故乡》教学反思
2014/04/10 职场文书
竞选班干部演讲稿600字
2014/08/20 职场文书
小学远程教育工作总结
2015/08/13 职场文书
如何用python反转图片,视频
2021/04/24 Python
详解Golang如何优雅的终止一个服务
2022/03/21 Golang
如何使用注解方式实现 Redis 分布式锁
2022/07/23 Redis