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 获取全局变量的代码
Apr 21 PHP
新手学习PHP的一些基础知识分享
Jul 27 PHP
PHP之APC缓存详细介绍 apc模块安装
Jan 13 PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
Mar 13 PHP
PHP常用编译参数中文说明
Sep 27 PHP
CI框架验证码CAPTCHA辅助函数用法实例
Nov 05 PHP
php操作xml入门之xml标签的属性分析
Jan 23 PHP
一次因composer错误使用引发的问题与解决
Mar 06 PHP
PHP+RabbitMQ实现消息队列的完整代码
Mar 20 PHP
PHP实现的操作数组类库定义与用法示例
May 24 PHP
php命名空间设计思想、用法与缺点分析
Jul 17 PHP
laravel 出现command not found问题的解决方案
Oct 23 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 截取字符串函数 truncate的用法介绍
2013/06/20 PHP
php ios推送(代码)
2013/07/01 PHP
浅析PHP微信支付通知的处理方式
2014/05/25 PHP
PHP开发框架laravel安装与配置教程
2015/03/13 PHP
PHP编写的图片验证码类文件分享
2016/06/06 PHP
PHP有序表查找之二分查找(折半查找)算法示例
2018/02/09 PHP
bindParam和bindValue的区别以及在Yii2中的使用详解
2018/03/12 PHP
Javascript实例教程(19) 使用HoTMetal(2)
2006/12/23 Javascript
JS处理VBArray的函数使用说明
2008/05/11 Javascript
javascript mouseover、mouseout停止事件冒泡的解决方案
2009/04/07 Javascript
Jquery 表单取值赋值的一些基本操作
2009/10/11 Javascript
js Html结构转字符串形式显示代码
2011/11/15 Javascript
JQuery魔力之$(&quot;tagName&quot;)与selector
2012/03/05 Javascript
通过url查找a元素并点击
2014/04/09 Javascript
简单的jquery左侧导航栏和页面选中效果
2014/08/21 Javascript
jQuery中Form相关知识汇总
2015/01/06 Javascript
jQuery中on()方法用法实例详解
2015/02/06 Javascript
JavaScript简单获取页面图片原始尺寸的方法
2016/06/21 Javascript
jQuery上传多张图片带进度条样式(DEMO)
2017/03/02 Javascript
深入理解vue2.0路由如何配置问题
2017/07/18 Javascript
使用Vant完成DatetimePicker 日期的选择器操作
2020/11/12 Javascript
Django中实现一个高性能计数器(Counter)实例
2014/07/09 Python
python实现弹跳小球
2019/05/13 Python
django基础学习之send_mail功能
2019/08/07 Python
python:动态路由的Flask程序代码
2019/11/22 Python
Python flask框架实现浏览器点击自定义跳转页面
2020/06/04 Python
adidas爱尔兰官方网站:阿迪达斯运动鞋和运动服
2019/11/01 全球购物
高三语文教学反思
2014/01/15 职场文书
高中课前三分钟演讲稿
2014/08/18 职场文书
安全保卫工作竞聘材料
2014/08/25 职场文书
个人租房协议书(范本)
2014/10/14 职场文书
优秀团队申报材料
2014/12/26 职场文书
个人更名证明
2015/06/23 职场文书
新学期家长寄语2016
2015/12/03 职场文书
初三数学教学反思
2016/02/17 职场文书