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实现批量查询清除一句话后门的代码
Jan 20 PHP
使用PHP的日期与时间函数技巧
Apr 24 PHP
Discuz 6.0+ 批量注册用户名
Sep 13 PHP
浅谈php serialize()与unserialize()的用法
Jun 05 PHP
Thinkphp中的volist标签用法简介
Jun 18 PHP
php清除和销毁session的方法分析
Mar 19 PHP
php控制文件下载速度的方法
Mar 24 PHP
PHP HTTP 认证实例详解
Nov 03 PHP
php 查找数组元素提高效率的方法详解
May 05 PHP
php实现和c#一致的DES加密解密实例
Jul 24 PHP
php设计模式之适配器模式原理、用法及注意事项详解
Sep 24 PHP
PHP反射基础知识回顾
Sep 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
PHP strip_tags()去除HTML、XML以及PHP的标签介绍
2014/02/18 PHP
PHP的命令行命令使用指南
2015/08/18 PHP
php+js实现的拖动滑块验证码验证表单操作示例【附源码下载】
2020/05/27 PHP
对采用动态原型方式无法展示继承机制得思考
2009/12/04 Javascript
php gethostbyname获取域名ip地址函数详解
2010/01/24 Javascript
jquery ui 1.7 ui.tabs 动态添加与关闭(按钮关闭+双击关闭)
2010/04/01 Javascript
JQuery从头学起第二讲
2010/07/04 Javascript
jquery设置元素的readonly和disabled的写法
2013/09/22 Javascript
JavaScript动态创建div等元素实例讲解
2016/01/06 Javascript
BootStrap Table 获取同行不同列元素的方法
2016/12/19 Javascript
JS按钮闪烁功能的实现代码
2017/07/21 Javascript
Django+Vue.js搭建前后端分离项目的示例
2017/08/07 Javascript
Vue组件实例间的直接访问实现代码
2017/08/20 Javascript
vue中使用sessionStorage记住密码功能
2018/07/24 Javascript
JS事件绑定的常用方式实例总结
2019/03/02 Javascript
浅析Vue 防抖与节流的使用
2019/11/14 Javascript
vue 实现setInterval 创建和销毁实例
2020/07/21 Javascript
[50:50]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.20
2020/12/23 DOTA
Python 实现 贪吃蛇大作战 代码分享
2016/09/07 Python
python导入时小括号大作用
2017/01/10 Python
Python中datetime模块参考手册
2017/01/13 Python
人脸识别经典算法一 特征脸方法(Eigenface)
2018/03/13 Python
jenkins+python自动化测试持续集成教程
2020/05/12 Python
降低python版本的操作方法
2020/09/11 Python
美国诺德斯特龙百货官网:Nordstrom
2016/08/23 全球购物
澳大利亚足球鞋和服装购物网站:Ultra Football
2018/10/11 全球购物
FORZIERI福喜利中国官网:奢侈品购物梦工厂
2019/05/03 全球购物
大码女装:Ulla Popken
2019/08/06 全球购物
自我评价范文点评
2013/12/04 职场文书
化妆品促销方案
2014/02/24 职场文书
《少年王冕》教学反思
2014/04/11 职场文书
《放飞蜻蜓》教学反思
2014/04/27 职场文书
买房协议书范本
2014/10/23 职场文书
JVM的类加载器和双亲委派模式你了解吗
2022/03/13 Java/Android
Python超详细分步解析随机漫步
2022/03/17 Python
Python用any()函数检查字符串中的字母以及如何使用all()函数
2022/04/14 Python