万能的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为SHOPEX增加日志功能代码
Jul 02 PHP
php垃圾代码优化操作代码
Aug 05 PHP
APACHE的AcceptPathInfo指令使用介绍
Jan 18 PHP
php生成随机数的三种方法
Sep 10 PHP
使用php的HTTP请求的库Requests实现美女图片墙
Feb 22 PHP
php数组转成json格式的方法
Mar 09 PHP
php实现编辑和保存文件的方法
Jul 20 PHP
Yii2 rbac权限控制之菜单menu实例教程
Apr 28 PHP
php 数组随机取值的简单实例
May 23 PHP
PHP将身份证正反面两张照片合成一张图片的代码
Apr 08 PHP
php脚本守护进程原理与实现方法详解
Jul 20 PHP
PHP 7.4 新语法之箭头函数实例详解
May 09 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
用php实现的获取网页中的图片并保存到本地的代码
2010/01/05 PHP
PHP永久登录、记住我功能实现方法和安全做法
2015/04/27 PHP
PHP读MYSQL中文乱码的快速解决方法
2016/10/01 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
让innerHTML的脚本也可以运行起来
2006/07/01 Javascript
javascript一些实用技巧小结
2011/03/18 Javascript
常用一些Javascript判断函数
2012/08/14 Javascript
JavaScript实现简单图片滚动附源码下载
2014/06/17 Javascript
深入浅析JavaScript中的3DES
2016/08/24 Javascript
提高Node.js性能的应用技巧分享
2017/08/10 Javascript
ES6中新增的Object.assign()方法详解
2017/09/22 Javascript
vuejs实现本地数据的筛选分页功能思路详解
2017/11/15 Javascript
NodeJS实现不可逆加密与密码密文保存的方法
2018/03/16 NodeJs
angularJS实现不同视图同步刷新详解
2018/10/09 Javascript
vue项目中在外部js文件中直接调用vue实例的方法比如说this
2019/04/28 Javascript
vue props对象validator自定义函数实例
2019/11/13 Javascript
原生js实现密码强度验证功能
2020/03/18 Javascript
原生JavaScript实现随机点名表
2021/01/14 Javascript
Python3实现将文件归档到zip文件及从zip文件中读取数据的方法
2015/05/22 Python
pycharm使用matplotlib.pyplot不显示图形的解决方法
2018/10/28 Python
Python将json文件写入ES数据库的方法
2019/04/10 Python
实现ECharts双Y轴左右刻度线一致的例子
2020/05/16 Python
python图片验证码识别最新模块muggle_ocr的示例代码
2020/07/03 Python
python 中关于pycharm选择运行环境的问题
2020/10/31 Python
前后端结合实现amazeUI分页效果
2020/08/21 HTML / CSS
支票、地址标签、包装纸和慰问卡:Current Catalog
2018/01/30 全球购物
SHEIN台湾:购买最新流行女装服饰
2019/05/18 全球购物
ASICS印度官方网站:日本专业运动品牌
2020/06/20 全球购物
Tommy Hilfiger澳洲官网:美国高端休闲领导品牌
2020/12/16 全球购物
什么是Linux虚拟文件系统VFS
2012/01/31 面试题
考试退步检讨书
2014/01/15 职场文书
即将毕业大学生自荐信
2014/01/24 职场文书
财产公证书样本
2014/04/04 职场文书
暑期家教宣传单
2015/07/14 职场文书
2016年暑假学生家长评语
2015/12/01 职场文书
感恩信:写给爸爸妈妈的一封感谢信
2019/09/12 职场文书