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 相关文章推荐
PHP4中实现动态代理
Oct 09 PHP
php 常用字符串函数总结
Mar 15 PHP
windows下zendframework项目环境搭建(通过命令行配置)
Dec 06 PHP
Thinkphp实现MySQL读写分离操作示例
Jun 25 PHP
php生成图片验证码-附五种验证码
Aug 19 PHP
php基于curl实现随机ip地址抓取内容的方法
Oct 11 PHP
详解yii2使用多个数据库的案例
Jun 16 PHP
PHP实现的MD5结合RSA签名算法实例
Oct 07 PHP
php 广告点击统计代码(php+mysql)
Feb 21 PHP
php实现微信企业转账功能
Oct 02 PHP
PHP使用 Imagick 扩展实现图片合成,圆角处理功能示例
Sep 09 PHP
PHP日期和时间函数的使用示例详解
Aug 06 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获取远程http或ftp文件的md5值的方法
2019/04/15 PHP
PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】
2019/09/10 PHP
php中数组最简单的使用方法
2020/12/27 PHP
JavaScript 异步调用框架 (Part 5 - 链式实现)
2009/08/04 Javascript
jquery validate使用攻略 第四步
2010/07/01 Javascript
JavaScript中为什么null==0为false而null大于=0为true(个人研究)
2013/09/16 Javascript
JavaScript累加、迭代、穷举、递归等常用算法实例小结
2018/05/08 Javascript
javascriptvoid(0)含义以及与&quot;#&quot;的区别讲解
2019/01/19 Javascript
vue实现二级导航栏效果
2019/10/19 Javascript
vue学习笔记之过滤器的基本使用方法实例分析
2020/02/01 Javascript
vue-cli点击实现全屏功能
2020/03/07 Javascript
[01:13]这,就是刀塔
2014/07/16 DOTA
[03:36]2014DOTA2 TI小组赛综述 八强诞生进军钥匙球馆
2014/07/15 DOTA
[01:34]2016国际邀请赛中国区预选赛IG战队教练采访
2016/06/27 DOTA
Python中http请求方法库汇总
2016/01/06 Python
python爬虫实战之最简单的网页爬虫教程
2017/08/13 Python
python自动化报告的输出用例详解
2018/05/30 Python
Python实现繁体中文与简体中文相互转换的方法示例
2018/12/18 Python
django ListView的使用 ListView中获取url中的参数值方式
2020/03/27 Python
Django使用Profile扩展User模块方式
2020/05/14 Python
从一次项目重构说起CSS3自定义变量在项目的使用方法
2021/03/01 HTML / CSS
美国在线医疗分销商:MedEx Supply
2020/02/04 全球购物
JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
2015/10/22 面试题
乡镇总工会学雷锋活动总结
2014/03/01 职场文书
追悼会主持词
2014/03/20 职场文书
工作分析计划书
2014/04/30 职场文书
群众路线教师自我剖析材料
2014/09/29 职场文书
学校领导班子四风问题整改意见
2014/10/02 职场文书
2014年女职工工作总结
2014/11/27 职场文书
元宵节晚会主持词
2015/07/01 职场文书
2015年幼儿园师德师风建设工作总结
2015/10/23 职场文书
高效课堂教学反思
2016/02/24 职场文书
2016年度优秀辅导员事迹材料
2016/02/26 职场文书
Python实现生活常识解答机器人
2021/06/28 Python
python实现简单聊天功能
2021/07/07 Python
Redis 操作多个数据库的配置的方法实现
2022/03/23 Redis