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 相关文章推荐
15种PHP Encoder的比较
Mar 06 PHP
php查找任何页面上的所有链接的方法
Dec 03 PHP
一个不易被发现的PHP后门代码解析
Jul 05 PHP
php常用字符串比较函数实例汇总
Nov 24 PHP
PHP中的命名空间相关概念浅析
Jan 22 PHP
php实现阿拉伯数字和罗马数字相互转换的方法
Apr 17 PHP
如何把php5.3版本升级到php5.4或者php5.5
Jul 31 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
Sep 11 PHP
php操作access数据库的方法详解
Feb 22 PHP
IOS 开发之NSDictionary转换成JSON字符串
Aug 14 PHP
Linux下源码包安装Swoole及基本使用操作图文详解
Apr 02 PHP
Laravel 5.4前后台分离,通过不同的二级域名访问方法
Oct 13 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
第4章 数据处理-php数组的处理-郑阿奇
2011/07/04 PHP
PHP字符串中特殊符号的过滤方法介绍
2014/02/18 PHP
PHP中一个有趣的preg_replace函数详解
2018/08/15 PHP
PHP的cookie与session原理及用法详解
2019/09/27 PHP
javascript实现的动态添加表单元素input,button等(appendChild)
2007/11/24 Javascript
Prototype中dom对象方法汇总
2008/09/17 Javascript
百度 popup.js 完美修正版非常的不错 脚本之家推荐
2009/04/17 Javascript
再谈querySelector和querySelectorAll的区别与联系
2012/04/20 Javascript
解析ScrollPic在ie8下只滚动一遍,然后变为空白 ie6,ie7,chrome,firefox正常
2013/06/26 Javascript
jQuery实现无限往下滚动效果代码
2016/04/16 Javascript
在vue.js中抽出公共代码的方法示例
2017/06/08 Javascript
p5.js入门教程之图片加载
2018/03/20 Javascript
基于JS实现快速读取TXT文件
2020/08/25 Javascript
js实现飞机大战小游戏
2020/08/26 Javascript
Python用GET方法上传文件
2015/03/10 Python
使用Python神器对付12306变态验证码
2016/01/05 Python
python爬虫爬取网页表格数据
2018/03/07 Python
使用批处理脚本自动生成并上传NuGet包(操作方法)
2019/11/19 Python
基于torch.where和布尔索引的速度比较
2020/01/02 Python
国外最大的眼镜网站:Coastal
2017/08/09 全球购物
SKECHERS官方旗舰店:美国舒适运动休闲品牌
2017/12/22 全球购物
英国家庭珠宝商:T. H. Baker
2018/02/08 全球购物
意大利单身交友网站:Meetic
2020/07/12 全球购物
护理个人求职信范文
2014/01/08 职场文书
计算机网络工程专业职业生涯规划书
2014/03/10 职场文书
师德演讲稿范文
2014/05/06 职场文书
2014年国庆晚会主持词
2014/09/19 职场文书
一份没有按时交货失信于客户的检讨书
2014/09/19 职场文书
社区国庆节活动总结
2015/03/23 职场文书
台风停课通知
2015/04/24 职场文书
表彰大会新闻稿
2015/07/17 职场文书
学习焦裕禄先进事迹心得体会
2016/01/23 职场文书
《鸡兔同笼》教学反思
2016/02/19 职场文书
Java Lambda表达式常用的函数式接口
2022/04/07 Java/Android
Redis+AOP+自定义注解实现限流
2022/06/28 Redis
基于Redission的分布式锁实战
2022/08/14 Redis