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 相关文章推荐
SSI指令
Nov 25 PHP
用PHP读取flv文件的播放时间长度
Sep 03 PHP
php模拟asp中的XmlHttpRequest实现http请求的代码
Mar 24 PHP
PHP采集腾讯微博的实现代码
Jan 19 PHP
Php output buffering缓存及程序缓存深入解析
Jul 15 PHP
兼容各大浏览器带关闭按钮的漂浮多组图片广告代码
Jun 05 PHP
yii2.0之GridView自定义按钮和链接用法
Dec 15 PHP
PHP curl 或 file_get_contents 获取需要授权页面的方法
May 05 PHP
PHP删除数组中指定下标的元素方法
Feb 03 PHP
php反射学习之不用new方法实例化类操作示例
Jun 14 PHP
Thinkphp框架+Layui实现图片/文件上传功能分析
Feb 07 PHP
PHP中的异常处理机制深入讲解
Nov 10 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
国产动画《伍六七》原声大碟大卖,啊哈娱乐引领音乐赋能IP的新尝试
2020/03/08 国漫
php pack与unpack 摸板字符字符含义
2009/10/29 PHP
laravel config文件配置全局变量的例子
2019/10/13 PHP
javascript动态添加表格数据行(ASP后台数据库保存例子)
2010/05/08 Javascript
jquery each()源代码
2011/02/14 Javascript
jquery获取自定义属性(attr和prop)实例介绍
2013/04/21 Javascript
jQuery 1.9移除了$.browser可以使用$.support来替代
2014/09/03 Javascript
两种方法基于jQuery实现IE浏览器兼容placeholder效果
2014/10/14 Javascript
JavaScript实现Base64编码转换
2016/04/23 Javascript
javascript中的后退和刷新实现方法
2016/11/10 Javascript
利用node.js+mongodb如何搭建一个简单登录注册的功能详解
2017/07/30 Javascript
JavaScript编程设计模式之构造器模式实例分析
2017/10/25 Javascript
C#实现将一个字符转换为整数
2017/12/12 Javascript
优化Vue项目编译文件大小的方法步骤
2019/05/27 Javascript
在微信小程序中使用mqtt服务的方法
2019/12/13 Javascript
记一次react前端项目打包优化的方法
2020/03/30 Javascript
[42:20]Secret vs Liquid 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python解析中国天气网的天气数据
2014/03/21 Python
python通过pip更新所有已安装的包实现方法
2017/05/19 Python
Python实现的简单模板引擎功能示例
2017/09/02 Python
Python 2.x如何设置命令执行的超时时间实例
2017/10/19 Python
python斐波那契数列的计算方法
2018/09/27 Python
关于python字符串方法分类详解
2019/08/20 Python
Python Django 前后端分离 API的方法
2019/08/28 Python
使用OpenCV实现仿射变换—缩放功能
2019/08/29 Python
python pycharm最新版本激活码(永久有效)附python安装教程
2020/09/18 Python
tensorflow生成多个tfrecord文件实例
2020/02/17 Python
python从Oracle读取数据生成图表
2020/10/14 Python
python调用win32接口进行截图的示例
2020/11/11 Python
纯CSS3实现漂亮的input输入框动画样式库(Text input love)
2018/12/29 HTML / CSS
会计专业毕业生自我鉴定
2013/10/29 职场文书
便利店的创业计划书
2014/01/15 职场文书
婚宴致辞
2015/07/28 职场文书
2019年家电促销广告语集锦
2019/10/21 职场文书
oracle DGMGRL ORA-16603报错的解决方法(DG Broker)
2021/04/06 Oracle
java版 简单三子棋游戏
2022/05/04 Java/Android