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中GET变量的使用
Oct 09 PHP
探讨如何在PHP开启gzip页面压缩实例
Jun 09 PHP
关于js与php互相传值的介绍
Jun 25 PHP
php获取数组中重复数据的两种方法
Jun 28 PHP
PhpDocumentor 2安装以及生成API文档的方法
May 21 PHP
PHP面向对象精要总结
Nov 07 PHP
php获取四位字母和数字的随机数的实现方法
Jan 09 PHP
php使用SAE原生Mail类实现各种类型邮件发送的方法
Oct 10 PHP
PHP判断密码强度的方法详解
May 26 PHP
PHP递归算法的简单实例
Feb 28 PHP
Laravel框架自定义公共函数的引入操作示例
Apr 16 PHP
PHP dirname简单使用代码实例
Nov 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
php适配器模式介绍
2012/08/14 PHP
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
2013/06/03 PHP
推荐几款用 Sublime Text 开发 Laravel 所用到的插件
2014/10/30 PHP
php取得字符串首字母的方法
2015/03/25 PHP
WordPress中给媒体文件添加分类和标签的PHP功能实现
2015/12/31 PHP
js RuntimeObject() 获取ie里面自定义函数或者属性的集合
2010/11/23 Javascript
当鼠标移动到图片上时跟随鼠标显示放大的图片效果
2013/06/06 Javascript
jquery.cookie() 方法的使用(读取、写入、删除)
2013/12/05 Javascript
对Jquery中的ajax再封装,简化操作示例
2014/02/12 Javascript
SeaJS入门教程系列之完整示例(三)
2014/03/03 Javascript
jQuery中children()方法用法实例
2015/01/07 Javascript
jquery实现顶部向右伸缩的导航区域代码
2015/09/02 Javascript
Jquery easyui 实现动态树
2015/11/17 Javascript
利用jquery获取select下拉框的值
2016/11/23 Javascript
jquery实现下拉框多选方法介绍
2017/01/03 Javascript
JavaScript图片处理与合成总结
2018/03/04 Javascript
nodejs 日志模块winston的使用方法
2018/05/02 NodeJs
JS实现简单的抽奖转盘效果示例
2019/02/16 Javascript
微信小程序swiper使用网络图片不显示问题解决
2019/12/13 Javascript
Python GAE、Django导出Excel的方法
2008/11/24 Python
说一说Python logging
2016/04/15 Python
Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
2017/01/12 Python
对python cv2批量灰度图片并保存的实例讲解
2018/11/09 Python
Python中变量的输入输出实例代码详解
2019/07/28 Python
HTML5适合的情人节礼物有纪念日期功能
2021/01/25 HTML / CSS
shallow copy和deep copy的区别
2016/05/09 面试题
网络程序员自荐信
2014/01/25 职场文书
个人四风问题整改措施思想汇报
2014/10/04 职场文书
基层党支部整改方案
2014/10/25 职场文书
计算机实训报告范文
2014/11/05 职场文书
2015年元旦标语大全
2014/12/09 职场文书
2015年社区妇联工作总结
2015/04/21 职场文书
2015学校师德师风工作总结
2015/04/22 职场文书
科技馆观后感
2015/06/08 职场文书
2016春季田径运动会广播稿
2015/12/21 职场文书
pycharm debug 断点调试心得分享
2021/04/16 Python