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 相关文章推荐
PHP环境搭建最新方法
Sep 05 PHP
一个从别的网站抓取信息的例子(域名查询)
Oct 09 PHP
PHP统计目录下的文件总数及代码行数(去除注释及空行)
Jan 17 PHP
php获取ip的三个属性区别介绍(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
Sep 23 PHP
处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题
Jul 03 PHP
ThinkPHP之foreach标签使用概述
Jun 30 PHP
php实现简单的上传进度条
Nov 17 PHP
PHP面试常用算法(推荐)
Jul 22 PHP
PHP实现多图上传(结合uploadify插件)思路分析
Nov 30 PHP
PHP实现文件上传功能实例代码
May 18 PHP
PHP7匿名类的用法示例
Apr 05 PHP
Laravel 微信小程序后端实现用户登录的示例代码
Nov 26 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 IN_ARRAY 函数使用注意事项
2010/07/24 PHP
PHP中使用hidef扩展代替define提高性能
2015/04/09 PHP
php unicode编码和字符串互转的方法
2020/08/12 PHP
使用Java实现简单的server/client回显功能的方法介绍
2013/05/03 Javascript
node中socket.io的事件使用详解
2014/12/15 Javascript
angularJS 中input示例分享
2015/02/09 Javascript
jQuery实现可展开合拢的手风琴面板菜单
2015/09/15 Javascript
图解JavaScript中的this关键字
2020/05/28 Javascript
跟我学习javascript的垃圾回收机制与内存管理
2015/11/23 Javascript
解决js页面滚动效果scrollTop在FireFox与Chrome浏览器间的兼容问题的方法
2015/12/03 Javascript
基于jQuery和CSS3制作响应式水平时间轴附源码下载
2015/12/20 Javascript
Angular实现购物车计算示例代码
2017/02/21 Javascript
vue指令以及dom操作详解
2017/03/04 Javascript
ES6生成器用法实例分析
2017/04/10 Javascript
详解Vue学习笔记入门篇之组件的内容分发(slot)
2017/07/17 Javascript
vue.js图片转Base64上传图片并预览的实现方法
2018/08/02 Javascript
React Hooks 实现和由来以及解决的问题详解
2020/01/17 Javascript
基于VUE实现判断设备是PC还是移动端
2020/07/03 Javascript
[03:03]2014DOTA2西雅图国际邀请赛 Alliance战队巡礼
2014/07/07 DOTA
[42:11]TNC vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Django中的“惰性翻译”方法的相关使用
2015/07/27 Python
Python下的常用下载安装工具pip的安装方法
2015/11/13 Python
Windows下搭建python开发环境详细步骤
2020/07/20 Python
Django基础之Model操作步骤(介绍)
2017/05/27 Python
Python实现读取json文件到excel表
2017/11/18 Python
python dict乱码如何解决
2020/06/07 Python
Django如何在不停机的情况下创建索引
2020/08/02 Python
CSS3 :nth-child()伪类选择器实现奇偶行显示不同样式
2013/11/05 HTML / CSS
英国在线发型和美容产品商店:Beauty Cutie
2019/04/27 全球购物
Java程序员面试90题
2013/10/19 面试题
简短的公司员工自我评价分享
2013/11/13 职场文书
运动会广播稿诗歌版
2014/09/12 职场文书
2017年寒假少先队活动总结
2016/04/06 职场文书
2019森林防火宣传标语大全!
2019/07/03 职场文书
纯html+css实现打字效果
2021/08/02 HTML / CSS
根德5570型九灯四波段立体声收音机是电子管收音机的楷模 ? 再论5570
2022/04/05 无线电