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 相关文章推荐
建立文件交换功能的脚本(二)
Oct 09 PHP
我的群发邮件程序
Oct 09 PHP
PHP 编程请选择正确的文本编辑软件
Dec 21 PHP
追求程序速度,而不是编程的速度
Apr 23 PHP
QueryPath PHP 中的jQuery
Apr 11 PHP
在MongoDB中模拟Auto Increment的php代码
Mar 06 PHP
PHP Class&amp;Object -- PHP 自排序二叉树的深入解析
Jun 25 PHP
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
Apr 08 PHP
PHP开发中常用的十个代码样例
Feb 02 PHP
Symfony2创建基于域名的路由相关示例
Nov 14 PHP
ThinkPHP框架实现的邮箱激活功能示例
Jun 15 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
Apr 04 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注入实例
2006/10/09 PHP
浅析PHP中的字符串编码转换(自动识别原编码)
2013/07/02 PHP
php实现倒计时效果
2015/12/19 PHP
Yii2选项卡的简单使用
2017/05/26 PHP
php DES加密算法实例分析
2019/09/18 PHP
JQuery 图片的展开和伸缩实例讲解
2013/04/18 Javascript
jQuery表格插件datatables用法总结
2014/09/05 Javascript
Node.js Sequelize如何实现数据库的读写分离
2016/10/23 Javascript
JS实现汉字与Unicode码相互转换的方法详解
2017/04/28 Javascript
webpack实现热更新(实施同步刷新)
2017/07/28 Javascript
React Native第三方平台分享的实例(Android,IOS双平台)
2017/08/04 Javascript
Javascript中从学习bind到实现bind的过程
2018/01/05 Javascript
node内置调试方法总结
2018/02/22 Javascript
vue3.0 CLI - 2.4 - 新组件 Forms.vue 中学习表单
2018/09/14 Javascript
JS如何监听div的resize事件详解
2020/12/03 Javascript
Python中使用MELIAE分析程序内存占用实例
2015/02/18 Python
让Python代码更快运行的5种方法
2015/06/21 Python
Python下调用Linux的Shell命令的方法
2018/06/12 Python
python实现监控某个服务 服务崩溃即发送邮件报告
2018/06/21 Python
python如何生成各种随机分布图
2018/08/27 Python
11个Python Pandas小技巧让你的工作更高效(附代码实例)
2019/04/30 Python
Python 转换RGB颜色值的示例代码
2019/10/13 Python
一篇文章搞懂python的转义字符及用法
2020/09/03 Python
10款最佳Python开发工具推荐,每一款都是神器
2020/10/15 Python
使用phonegap检测网络状态的方法
2017/03/30 HTML / CSS
校园招聘策划书
2014/01/09 职场文书
生日寿宴答谢词
2014/01/19 职场文书
成龙霸王洗发水广告词
2014/03/14 职场文书
马智宇婚礼主持词
2014/03/22 职场文书
幼儿园老师寄语
2014/04/03 职场文书
2014年质量工作总结
2014/11/22 职场文书
入党政审材料范文
2014/12/24 职场文书
世界水日宣传活动总结
2015/02/09 职场文书
辞职信怎么写
2015/02/27 职场文书
在 SQL 语句中处理 NULL 值的方法
2021/06/07 SQL Server
MySQL数据库索引的最左匹配原则
2021/11/20 MySQL