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 相关文章推荐
apache rewrite_module模块使用教程
Jan 10 PHP
攻克CakePHP系列二 表单数据显示
Oct 22 PHP
PHP set_time_limit(0)长连接的实现分析
Mar 02 PHP
xml在joomla表单中的应用详解分享
Jul 19 PHP
ThinkPHP表单自动验证实例
Oct 13 PHP
ThinkPHP实现ajax仿官网搜索功能实例
Dec 02 PHP
使用PHP实现阻止用户上传成人照片或者裸照
Dec 25 PHP
php单文件版在线代码编辑器
Mar 12 PHP
实例简介PHP的一些高级面向对象编程的特性
Nov 27 PHP
Yii中创建自己的Widget实例
Jan 05 PHP
Joomla使用Apache重写模式的方法
May 04 PHP
PHP使用Redis实现防止大并发下二次写入的方法
Oct 09 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学习教程之第1天
2008/06/15 PHP
PHP中date()日期函数有关参数整理
2011/07/19 PHP
PHP多线程编程之管道通信实例分析
2015/03/07 PHP
PHP双向链表定义与用法示例
2018/01/31 PHP
用YUI做了个标签浏览效果
2007/02/20 Javascript
JS小功能(操作Table--动态添加删除表格及数据)实现代码
2013/11/28 Javascript
JavaScript严格模式禁用With语句的原因
2014/10/20 Javascript
JavaScript代码里的判断小结
2016/08/22 Javascript
BootStrap glyphicon图标无法显示的解决方法
2016/09/06 Javascript
前端js实现文件的断点续传 后端PHP文件接收
2016/10/14 Javascript
javascript中toFixed()四舍五入使用方法详解
2018/09/28 Javascript
解决Mint-ui 框架Popup和Datetime Picker组件滚动穿透的问题
2020/11/04 Javascript
[42:27]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第三局
2016/03/05 DOTA
python抓取京东商城手机列表url实例代码
2013/12/18 Python
Python使用multiprocessing创建进程的方法
2015/06/04 Python
python实现应用程序在右键菜单中添加打开方式功能
2017/01/09 Python
Python中int()函数的用法浅析
2017/10/17 Python
一篇文章快速了解Python的GIL
2018/01/12 Python
python使用tensorflow保存、加载和使用模型的方法
2018/01/31 Python
解决pip install的时候报错timed out的问题
2018/06/12 Python
python调用摄像头显示图像的实例
2018/08/03 Python
详解django+django-celery+celery的整合实战
2019/03/19 Python
Python3的unicode编码转换成中文的问题及解决方案
2019/12/10 Python
PyCharm汉化安装及永久激活详细教程(靠谱)
2020/01/16 Python
Jupyter Notebook的连接密码 token查询方式
2020/04/21 Python
用python制作个视频下载器
2021/02/01 Python
碧欧泉Biotherm加拿大官方网站:法国高端护肤品牌
2019/10/18 全球购物
产品促销活动策划书
2014/01/15 职场文书
企业消防安全制度
2014/02/02 职场文书
群众路线教育实践活动思想汇报(2014特荐篇)
2014/09/16 职场文书
2014物价局群众路线对照检查材料思想汇报
2014/09/21 职场文书
走群众路线学习笔记
2014/11/06 职场文书
公司行政主管岗位职责
2015/04/09 职场文书
信用卡催款律师函
2015/05/27 职场文书
python 实现的截屏工具
2021/05/08 Python
安装Ruby和 Rails的详细步骤
2022/04/19 Ruby