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 HandlerSocket的使用
May 02 PHP
PHP中运用jQuery的Ajax跨域调用实现代码
Feb 21 PHP
如何获知PHP程序占用多少内存(memory_get_usage)
Sep 23 PHP
joomla jce editor 解决上传中文名文件失败问题
Jun 09 PHP
php网站判断用户是否是手机访问的方法
Nov 01 PHP
PHP将HTML转换成文本的实现代码
Jan 21 PHP
php转换颜色为其反色的方法
Apr 27 PHP
PHP会话处理的10个函数
Aug 11 PHP
详解Laravel视图间共享数据与视图Composer
Aug 04 PHP
php curl发送请求实例方法
Aug 01 PHP
PHP中类与对象功能、用法实例解读
Mar 27 PHP
PHP unset函数原理及使用方法解析
Aug 14 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
smarty高级特性之对象的使用方法
2015/12/25 PHP
Js 获取当前日期时间及其它操作实现代码
2021/03/04 Javascript
datagrid框架的删除添加与修改
2013/04/08 Javascript
JavaScript中的常见问题解决方法(乱码,IE缓存,代理)
2013/11/28 Javascript
跟我学Nodejs(一)--- Node.js简介及安装开发环境
2014/05/20 NodeJs
js delete 用法(删除对象属性及变量)
2014/08/24 Javascript
jQuery不使用插件及swf实现无刷新文件上传
2014/12/08 Javascript
webapp框架AngularUI的demo改造之路
2014/12/21 Javascript
js运动动画的八个知识点
2015/03/12 Javascript
javascript弹出窗口实现代码
2015/11/12 Javascript
js获取所有checkbox的值的简单实例
2016/05/30 Javascript
Node.js读写文件之批量替换图片的实现方法
2016/09/07 Javascript
最全面的百度地图JavaScript离线版开发
2016/09/10 Javascript
seajs学习之模块的依赖加载及模块API的导出
2016/10/20 Javascript
JS中from 表单序列化提交的代码
2017/01/20 Javascript
详谈angularjs中路由页面强制更新的问题
2017/04/24 Javascript
浅谈JS 数字和字符串之间相互转化的纠纷
2017/10/20 Javascript
使用百度地图实现地图网格的示例
2018/02/06 Javascript
vue3自定义dialog、modal组件的方法
2021/01/04 Vue.js
django 开发忘记密码通过邮箱找回功能示例
2018/04/17 Python
Python利用itchat库向好友或者公众号发消息的实例
2019/02/21 Python
Python实现操纵控制windows注册表的方法分析
2019/05/24 Python
Python 获取 datax 执行结果保存到数据库的方法
2019/07/11 Python
wxPython修改文本框颜色过程解析
2020/02/14 Python
python实现感知机模型的示例
2020/09/30 Python
css3中单位px,em,rem,vh,vw,vmin,vmax的区别及浏览器支持情况
2016/12/06 HTML / CSS
美国办公用品购物网站:Quill.com
2016/09/01 全球购物
德国网上宠物店:Zoobio
2018/05/23 全球购物
EJB发布WEB服务一般步骤
2012/10/31 面试题
秘书专业自荐信范文
2013/12/26 职场文书
销售目标责任书
2014/07/23 职场文书
上党课的心得体会
2014/09/02 职场文书
nginx反向代理时如何保持长连接
2021/03/31 Servers
MySQL主从复制断开的常用修复方法
2021/04/07 MySQL
分享node.js实现简单登录注册的具体代码
2022/04/26 NodeJs
windows11选中自动复制怎么开启? Win11自动复制所选内容的方法
2022/07/23 数码科技