PHP实现的分页类定义与用法示例


Posted in PHP onJuly 05, 2017

本文实例讲述了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.'" rel="external nofollow" rel="external nofollow" >'.$_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.'" rel="external nofollow" rel="external nofollow" >'.$_page.'</a> ';
     }
     return $_pagelist;
   }
   //首页
   private function first() {
     if ($this->page > $this->bothnum+1) {
        return ' <a href="'.$this->url.'" rel="external nofollow" >1</a> ...';
     }
   }
   //上一页
   private function prev() {
     if ($this->page == 1) {
        return '<span class="disabled">上一页</span>';
     }
     return ' <a href="'.$this->url.'&page='.($this->page-1).'" rel="external nofollow" >上一页</a> ';
   }
   //下一页
   private function next() {
     if ($this->page == $this->pagenum) {
        return '<span class="disabled">下一页</span>';
     }
     return ' <a href="'.$this->url.'&page='.($this->page+1).'" rel="external nofollow" >下一页</a> ';
   }
   //尾页
   private function last() {
     if ($this->pagenum - $this->page > $this->bothnum) {
        return ' ...<a href="'.$this->url.'&page='.$this->pagenum.'" rel="external nofollow" >'.$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脚本的10个技巧(6)
Oct 09 PHP
缓存技术详谈―php
Dec 14 PHP
PHP数组操作汇总 php数组的使用技巧
Jul 17 PHP
PHP去掉从word直接粘贴过来的没有用格式的函数
Oct 29 PHP
浅析Mysql 数据回滚错误的解决方法
Aug 05 PHP
php格式化日期实例分析
Nov 12 PHP
php把数组值转换成键的方法
Jul 13 PHP
php开发工具有哪五款
Nov 09 PHP
php中Ioc(控制反转)和Di(依赖注入)
May 07 PHP
php简单构造json多维数组的方法示例
Jun 08 PHP
PHP/ThinkPHP实现批量打包下载文件的方法示例
Jul 31 PHP
tp5实现微信小程序多图片上传到服务器功能
Jul 16 PHP
PHP实现的文件上传类与用法详解
Jul 05 #PHP
PHP基于GD库实现的生成图片缩略图函数示例
Jul 05 #PHP
PHP实现的下载远程文件类定义与用法示例
Jul 05 #PHP
详解PHP使用Redis存储session时的一个Warning定位
Jul 05 #PHP
php如何修改SESSION的生存存储时间的实例代码
Jul 05 #PHP
PHP实现根据密码长度显示安全条
Jul 04 #PHP
PHP截取发动短信内容的方法
Jul 04 #PHP
You might like
php ci框架中加载css和js文件失败的原因及解决方法
2014/07/29 PHP
phplot生成图片类用法详解
2015/01/06 PHP
PHP封装CURL扩展类实例
2015/07/28 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
js 对联广告、漂浮广告封装类(IE,FF,Opera,Safari,Chrome
2009/11/26 Javascript
js控制input框只读实现示例
2014/01/20 Javascript
详解JavaScript基于面向对象之创建对象(2)
2015/12/10 Javascript
js模仿java的Map集合详解
2016/01/06 Javascript
JS创建事件的三种方法(实例代码)
2016/05/12 Javascript
BootStrap实现轮播图效果(收藏)
2016/12/30 Javascript
js实现下拉框效果(select)
2017/03/28 Javascript
基于JavaScript实现的希尔排序算法分析
2017/04/14 Javascript
解决在vue+webpack开发中出现两个或多个菜单公用一个组件问题
2017/11/28 Javascript
微信小程序实现笑脸评分功能
2018/11/03 Javascript
微信小程序中button去除默认的边框实例代码
2019/08/01 Javascript
Node如何后台数据库使用增删改查功能
2019/11/21 Javascript
15分钟学会vue项目改造成SSR(小白教程)
2019/12/17 Javascript
vue+AI智能机器人回复功能实现
2020/07/16 Javascript
js实现数字跳动到指定数字
2020/08/25 Javascript
Python FTP操作类代码分享
2014/05/13 Python
python 快速把超大txt文件转存为csv的实例
2018/10/26 Python
python3光学字符识别模块tesserocr与pytesseract的使用详解
2020/02/26 Python
Python 如何测试文件是否存在
2020/07/31 Python
详解python第三方库的安装、PyInstaller库、random库
2021/03/03 Python
localStorage、sessionStorage使用总结
2017/11/17 HTML / CSS
Too Faced官网:美国知名彩妆品牌
2017/03/07 全球购物
施华洛世奇波兰官网:SWAROVSKI波兰
2019/06/18 全球购物
澳大利亚领先的女性运动服品牌:Lorna Jane
2020/06/19 全球购物
广州御银科技股份有限公司试卷(C++)
2016/11/04 面试题
内刊编辑求职自荐书范文
2014/02/19 职场文书
搞笑的获奖感言
2014/08/16 职场文书
2014年初一班主任工作总结
2014/11/08 职场文书
格列夫游记读书笔记
2015/07/01 职场文书
教你使用Pandas直接核算Excel中快递费用
2021/05/12 Python
pytorch model.cuda()花费时间很长的解决
2021/06/01 Python
这样写python注释让代码更加的优雅
2021/06/02 Python