万能的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 相关文章推荐
递归列出所有文件和目录
Oct 09 PHP
基于mysql的论坛(6)
Oct 09 PHP
PHP与MySQL开发的8个技巧小结
Dec 17 PHP
thinkphp实现图片上传功能分享
Mar 04 PHP
PHP实现显示照片exif信息的方法
Jul 11 PHP
适合PHP初学者阅读的4本经典书籍
Sep 23 PHP
phpmailer绑定邮箱的实现方法
Dec 01 PHP
详解Yii2 定制表单输入字段的标签和样式
Jan 04 PHP
php通过header发送自定义数据方法
Jan 18 PHP
PHP面向对象五大原则之依赖倒置原则(DIP)详解
Apr 08 PHP
PHP设计模式之工厂模式(Factory Pattern)的讲解
Mar 21 PHP
php修改word的实例方法
Nov 17 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的FTP学习(四)
2006/10/09 PHP
php中用文本文件做数据库的实现方法
2008/03/27 PHP
php xfocus防注入资料
2008/04/27 PHP
php中jQuery插件autocomplate的简单使用笔记
2012/06/14 PHP
PHP遍历并打印指定目录下所有文件实例
2014/02/10 PHP
php使用GD创建保持宽高比缩略图的方法
2015/04/17 PHP
js跟随滚动条滚动浮动代码
2009/12/31 Javascript
idTabs基于JQuery的根据URL参数选择Tab插件
2012/04/11 Javascript
ZeroClipboard插件实现多浏览器复制功能(支持firefox、chrome、ie6)
2014/08/30 Javascript
DOM节点的替换或修改函数replaceChild()用法实例
2015/01/12 Javascript
基于jquery实现图片相关操作(重绘、获取尺寸、调整大小、缩放)
2015/12/25 Javascript
jQuery基本选择器(实例及表单域value的获取方法)
2016/05/20 Javascript
jquery事件绑定解绑机制源码解析
2016/09/19 Javascript
Vue.js 2.0 移动端拍照压缩图片上传预览功能
2017/03/06 Javascript
jQuery插件FusionCharts实现的2D柱状图效果示例【附demo源码下载】
2017/03/06 Javascript
vue在使用ECharts时的异步更新和数据加载详解
2017/11/22 Javascript
详解JS浏览器事件循环机制
2019/03/27 Javascript
JS删除String里某个字符的方法
2021/01/06 Javascript
node.js实现上传文件功能
2019/07/15 Javascript
Vue router传递参数并解决刷新页面参数丢失问题
2020/12/02 Vue.js
Python遍历pandas数据方法总结
2018/02/09 Python
一行代码让 Python 的运行速度提高100倍
2018/10/08 Python
python 实现查询Neo4j多节点的多层关系
2019/12/23 Python
Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解
2020/03/30 Python
美国内衣第一品牌:Hanes(恒适)
2016/07/29 全球购物
英国护肤品购物网站:Beauty Expert
2016/08/19 全球购物
西班牙英格列斯百货官网:El Corte Inglés
2016/09/25 全球购物
意大利简约的休闲品牌:Aspesi
2018/02/08 全球购物
STP的判定过程
2012/10/01 面试题
给实习单位的感谢信
2014/02/01 职场文书
四年级评语大全
2014/04/21 职场文书
员工薪酬激励方案
2014/06/13 职场文书
应届生求职信范文
2014/06/30 职场文书
入伍通知书
2015/04/23 职场文书
红高粱观后感
2015/06/10 职场文书
Win11电脑显示本地时间与服务器时间不一致怎么解决?
2022/04/05 数码科技