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&amp;MYSQL服务器配置说明
Oct 09 PHP
php自动加载的两种实现方法
Jun 21 PHP
探讨:array2xml和xml2array以及xml与array的互相转化
Jun 24 PHP
php中stream(流)的用法
Mar 25 PHP
php中cookie实现二级域名可访问操作的方法
Nov 11 PHP
php+jQuery.uploadify实现文件上传教程
Dec 26 PHP
php读取csv数据保存到数组的方法
Jan 03 PHP
php写入数据到CSV文件的方法
Mar 14 PHP
php实现判断访问来路是否为搜索引擎机器人的方法
Apr 15 PHP
php可扩展的验证类实例(可对邮件、手机号、URL等验证)
Jul 09 PHP
浅谈COOKIE和SESSION区别
Jul 19 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
Nov 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
php出现Cannot modify header information问题的解决方法大全
2008/04/09 PHP
ThinkPHP V2.2说明文档没有说明的那些事实例小结
2015/07/01 PHP
Yii2中datetime类的使用
2016/12/17 PHP
laradock环境docker-compose操作详解
2019/07/29 PHP
js实现在文本框光标处添加字符的方法介绍
2012/11/24 Javascript
javascript跑马灯悬停放大效果实现代码
2012/12/12 Javascript
jquery 清空file域示例(兼容个浏览器)
2013/10/11 Javascript
jQuery实现Twitter的自动文字补齐特效
2014/11/28 Javascript
详谈jQuery操纵DOM元素属性 attr()和removeAtrr()方法
2015/01/22 Javascript
基于JS2Image实现圣诞树代码
2015/12/24 Javascript
详解JavaScript中双等号引起的隐性类型转换
2016/05/30 Javascript
Bootstrap基本组件学习笔记之进度条(15)
2016/12/08 Javascript
node.js利用redis数据库缓存数据的方法
2017/03/01 Javascript
AngularJS自定义表单验证功能实例详解
2018/08/24 Javascript
使用原生js编写一个简单的框选功能方法
2019/05/13 Javascript
JQuery事件委托原理与用法实例分析
2019/05/13 jQuery
vue npm install 安装某个指定的版本操作
2020/08/11 Javascript
[56:41]iG vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/17 DOTA
[01:04]不如跳舞!DOTA2新英雄玛尔斯的欢乐日常
2019/03/11 DOTA
python实现ip查询示例
2014/03/26 Python
基于python中staticmethod和classmethod的区别(详解)
2017/10/24 Python
python字典快速保存于读取的方法
2018/03/23 Python
python跳过第一行快速读取文件内容的实例
2018/07/12 Python
python爬虫租房信息在地图上显示的方法
2019/05/13 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
2019/07/03 Python
使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例
2020/05/15 Python
Python中免验证跳转到内容页的实例代码
2020/10/23 Python
python UDF 实现对csv批量md5加密操作
2021/01/01 Python
html5 input属性使用示例
2013/06/28 HTML / CSS
自我鉴定标准格式
2014/03/19 职场文书
投标授权委托书范文
2014/08/02 职场文书
简历自荐信范文
2015/03/09 职场文书
2015年生产车间工作总结
2015/04/22 职场文书
关于运动会的宣传稿
2015/07/23 职场文书
小学英语教师研修感悟
2015/11/18 职场文书
Android使用EventBus发送消息,Fragment中接收消息的方法会执行多次
2022/04/24 Java/Android