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学习之 循环结构实现代码
Jun 09 PHP
浅析关于PHP位运算的简单权限设计
Jun 30 PHP
php中Ctype函数用法详解
Dec 09 PHP
使用 PHPStorm 开发 Laravel
Mar 24 PHP
Laravel 5框架学习之用户认证
Apr 09 PHP
php获得客户端浏览器名称及版本的方法(基于ECShop函数)
Dec 23 PHP
CI框架整合smarty步骤详解
May 19 PHP
你不知道的文件上传漏洞php代码分析
Sep 29 PHP
php执行多个存储过程的方法【基于thinkPHP】
Nov 08 PHP
PHP文件管理之实现网盘及压缩包的功能操作
Sep 20 PHP
yii2.0框架使用 beforeAction 防非法登陆的方法分析
Sep 11 PHP
Thinkphp页面跳转设置跳转等待时间的操作
Oct 16 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
星际争霸 Starcraft 秘技补丁
2020/03/14 星际争霸
PHP程序员最常犯的11个MySQL错误小结
2010/11/20 PHP
新浪SAE搭建PHP项目教程
2015/01/28 PHP
php 使用fopen函数创建、打开文件详解及实例代码
2016/09/24 PHP
fix-ie5.js扩展在IE5下不能使用的几个方法
2007/08/20 Javascript
快速查找数组中的某个元素并返回下标示例
2013/09/03 Javascript
jQuery EasyUI datagrid实现本地分页的方法
2015/02/13 Javascript
Jquery实现仿京东商城省市联动菜单
2015/11/19 Javascript
jquery制做精致的倒计时特效
2016/06/13 Javascript
避免jQuery名字冲突 noConflict()方法
2016/07/30 Javascript
Three.js学习之文字形状及自定义形状
2016/08/01 Javascript
React创建组件的三种方式及其区别
2017/01/12 Javascript
基于JavaScript实现无限加载瀑布流
2017/07/21 Javascript
深入理解ES6 Promise 扩展always方法
2017/09/26 Javascript
Angular.js实现获取验证码倒计时60秒按钮的简单方法
2017/10/18 Javascript
Vue 中批量下载文件并打包的示例代码
2017/11/20 Javascript
JS删除数组里的某个元素方法
2018/02/03 Javascript
vue iView 上传组件之手动上传功能
2018/03/16 Javascript
vue本地打开build后生成的dist文件夹index.html问题
2019/09/04 Javascript
防止Layui form表单重复提交的实现方法
2019/09/10 Javascript
vantUI 获得piker选中值的自定义ID操作
2020/11/04 Javascript
在Python的Flask框架下收发电子邮件的教程
2015/04/21 Python
Python远程视频监控程序的实例代码
2019/05/05 Python
Python-copy()与deepcopy()区别详解
2019/07/12 Python
仿CSDN Blog返回页面顶部功能实现原理及代码
2013/06/30 HTML / CSS
Hotels.com台湾:饭店订房网
2017/09/06 全球购物
.NET程序员的数据库面试题
2012/10/10 面试题
微观物理专业自荐信
2014/01/26 职场文书
乐观自信演讲稿范文
2014/05/21 职场文书
爱的承诺书
2015/01/20 职场文书
2015应届毕业生求职信范文
2015/03/20 职场文书
2015年后备干部工作总结
2015/05/15 职场文书
检察院起诉意见书
2015/05/20 职场文书
2015年卫生监督工作总结
2015/05/21 职场文书
农村婚庆主持词
2015/06/29 职场文书
SpringCloud Feign请求头删除修改的操作代码
2022/03/20 Java/Android