万能的php分页类


Posted in PHP onJuly 06, 2017

本文实例为大家分享了php分页类的具体代码,供大家参考,具体内容如下

<?php
/*核心:首页、上一页、下一页、尾页的url*/
/*超全局$_SERVER*/
$page = new Page(5,60);
var_dump($page->allUrl());
class Page{
//   每页显示的个数
  protected $number;
//   一共有多少数据
  protected $totalCount;
//   当前页
  protected $page;
//   url
  protected $url;
  
  public function __construct($number,$totalCount){
    $this->number= $number;
    $this->totalCount = $totalCount;
    //得到总页数
    $this->totalPage = $this->getTotalPage();
    //得到当前页数
    $this->page = $this->getPage();
    //得到URL
    $this->url = $this->getUrl();
    echo $this->url;
  }
  /*得到总页数并向上取整*/
  protected function getTotalPage(){
    return   ceil($this->totalCount/$this->number);
  }
  /**/
  protected function getPage(){
    if (empty($_GET['page'])){
      $page=1;
    }elseif ($_GET['page'] > $this->totalPage){
      $page = $this->totalPage;
    }elseif ($_GET["page"]<1){
      $page = 1;
    }else{
      $page = $_GET['page'];
    }
    return $page;
  }
  protected function getUrl(){
    //得到协议名
    $scheme = $_SERVER['REQUEST_SCHEME'];
    //得到主机名
    $host= $_SERVER['SERVER_NAME'];
    //得到端口号
    $port = $_SERVER['SERVER_PORT'];
    //得到路径和请求字符串
    $url = $_SERVER['REQUEST_URI'];
    /*中间做处理,要将page=5等这种字符串拼接URL
    中,所以如果原来的url中有page这个参数,我们首先
    需要将原来的page参数给清空*/
    $urlArray = parse_url($url);
//     var_dump($urlArray);

    $path = $urlArray['path'];
    if (!empty($urlArray['query'])){
      //将query中的值转化为数组
      parse_str($urlArray['query'],$array);
      //如果他有page就将它删掉
      unset($array['page']);
      //将关联数组转化为query
      $query = http_build_query($array);
      //不为空的话就与path连结
      if ($query != ''){
        $path = $path.'?'.$query;
      }
    }
    return 'http://'. $host.':'.$port.$path;
  }
  protected function setUrl($str){
    if (strstr($this->url, '?')){
      $url = $this->url.'&'.$str;
    }else{
      $url = $this->url.'?'.$str;
    }
    return $url;
  }
  /*所有的url*/
  public function allUrl(){
    return [
      'first' => $this->first(),
      'next' => $this->next(),
      'prev'=> $this->prev(),
      'end'=> $this->end(),
    ];
  }
  /*首页*/
  public function first(){
    return $this->setUrl('page=1');
  }
  /*下一页*/
  public function next(){
    //根据当前page得带下一页的页码
    if ($this->page+1 > $this->totalPage) {
      $page = $this->totalPage;
    }else{
      $page = $this->page+1;
    }
    return $this->setUrl('page='.$page);
  }
  /*上一页*/
  public function prev(){
    //根据当前page得带下一页的页码
    if ($this->page - 1 < 1) {
      $page = 1;
    }else{
      $page = $this->page-1;
    }
    return $this->setUrl('page='.$page);
  }
  /*尾页*/
  public function end(){
    return $this->setUrl('page='.$this->totalPage);
  }
  /*limit 0,5*/
  public function limit(){
    $offset = ($this->page-1)*$this->number;
    return $offset.','.$this->number;
  }
  
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP的一个完整SMTP类(解决邮件服务器需要验证时的问题)
Oct 09 PHP
开发大型PHP项目的方法
Oct 09 PHP
PHP函数addslashes和mysql_real_escape_string的区别
Apr 22 PHP
php导入大量数据到mysql性能优化技巧
Dec 29 PHP
PHP实现适用于文件内容操作的分页类
Jun 15 PHP
利用php生成验证码
Feb 23 PHP
yii2中LinkPager增加总页数和总记录数的实例
Aug 28 PHP
PHP实现断点续传乱序合并文件的方法
Sep 06 PHP
PHP PDOStatement::getColumnMeta讲解
Feb 01 PHP
浅谈PHP无限极分类原理
Mar 14 PHP
PHP使用PDO创建MySQL数据库、表及插入多条数据操作示例
May 30 PHP
PHP实现的抓取小说网站内容功能示例
Jun 27 PHP
PHP 实现从数据库导出到.csv文件方法
Jul 06 #PHP
php文件上传类的分享
Jul 06 #PHP
PHP图片水印类的封装
Jul 06 #PHP
php生出随机字符串
Jul 06 #PHP
PHP实现的分页类定义与用法示例
Jul 05 #PHP
PHP实现的文件上传类与用法详解
Jul 05 #PHP
PHP基于GD库实现的生成图片缩略图函数示例
Jul 05 #PHP
You might like
帅气的琦玉老师
2020/03/02 日漫
PHP 内存缓存加速功能memcached安装与用法
2009/09/03 PHP
基于pear auth实现登录验证
2010/02/26 PHP
php之Smarty模板使用方法示例详解
2014/07/08 PHP
两种php去除二维数组的重复项方法
2015/11/04 PHP
PDO::getAttribute讲解
2019/01/28 PHP
javascript 全角转换实现代码
2009/07/17 Javascript
jQuery1.3.2 升级到jQuery1.4.4需要修改的地方
2011/01/06 Javascript
在jQuery 1.5中使用deferred对象的代码(翻译)
2011/03/10 Javascript
jquery移除button的inline onclick事件(已测试及兼容浏览器)
2013/01/25 Javascript
jQuery学习笔记之jQuery.extend(),jQuery.fn.extend()分析
2014/06/09 Javascript
JS函数的几种定义方式分析
2015/12/17 Javascript
PHP+jquery+ajax实现分页
2016/12/09 Javascript
Canvas 绘制粒子动画背景
2017/02/15 Javascript
bootstrap实现动态进度条效果
2017/03/08 Javascript
JQuery实现定时刷新功能代码
2017/05/09 jQuery
webpack打包并将文件加载到指定的位置方法
2018/02/22 Javascript
通过jquery.cookie.js实现记住用户名、密码登录功能
2018/06/20 jQuery
JS判断数组里是否有重复元素的方法小结
2019/05/21 Javascript
bootstrap table插件动态加载表头
2019/07/19 Javascript
Vuex的实战使用详解
2019/10/31 Javascript
Node.js API详解之 module模块用法实例分析
2020/05/13 Javascript
python访问纯真IP数据库的代码
2011/05/19 Python
收集的几个Python小技巧分享
2014/11/22 Python
python实战之实现excel读取、统计、写入的示例讲解
2018/05/02 Python
python 生成图形验证码的方法示例
2018/11/11 Python
Python协程 yield与协程greenlet简单用法示例
2019/11/22 Python
Python实现爬取网页中动态加载的数据
2020/08/17 Python
CSS3 实现的加载动画
2020/12/07 HTML / CSS
马来西亚领先的在线礼品店:Giftr
2018/08/23 全球购物
学生拾金不昧表扬信
2014/01/21 职场文书
西湖英语导游词
2015/02/06 职场文书
酒店财务经理岗位职责
2015/04/08 职场文书
为什么阅读对所有年龄段的孩子都很重要?
2019/07/08 职场文书
pytorch常用数据类型所占字节数对照表一览
2021/05/17 Python
JavaScript实现登录窗体
2021/06/22 Javascript