万能的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新手上路(十一)
Oct 09 PHP
基于HTTP长连接的&quot;服务器推&quot;技术的php 简易聊天室
Oct 31 PHP
PHP clearstatcache()函数详解
Mar 02 PHP
php 中文字符入库或显示乱码问题的解决方法
Apr 12 PHP
PHP 查找字符串常用函数介绍
Jun 07 PHP
windows中为php安装mongodb与memcache
Jan 06 PHP
PHP实现二维数组根据key进行排序的方法
Dec 30 PHP
PHP基于ICU扩展intl快速实现汉字转拼音及按拼音首字母分组排序的方法
May 03 PHP
php处理抢购类功能的高并发请求
Feb 08 PHP
实例介绍PHP中zip_open()函数用法
Feb 15 PHP
Laravel框架文件上传功能实现方法示例
Apr 16 PHP
laravel 数据验证规则详解
Oct 23 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
Yii2针对指定url的生成及图片等的引入方法小结
2016/07/18 PHP
利用php-cli和任务计划实现刷新token功能的方法
2017/05/03 PHP
PHP ElasticSearch做搜索实例讲解
2020/02/05 PHP
javascript级联下拉列表实例代码(自写)
2013/05/10 Javascript
Extjs4 类的定义和扩展实例
2013/06/28 Javascript
js兼容的placeholder属性详解
2013/08/18 Javascript
jqeury-easyui-layout问题解决方法
2014/03/24 Javascript
node.js正则表达式获取网页中所有链接的代码实例
2014/06/03 Javascript
jQuery遍历对象、数组、集合实例
2014/11/08 Javascript
简化版手机端照片预览组件
2015/04/13 Javascript
jQuery横向擦除焦点图特效代码分享
2015/09/06 Javascript
在html中引入外部js文件,并调用带参函数的方法
2016/10/31 Javascript
JS仿JQuery选择器功能
2017/03/08 Javascript
ES6中的rest参数与扩展运算符详解
2017/07/18 Javascript
用JS实现根据当前时间随机生成流水号或者订单号
2018/05/31 Javascript
vue引入axios同源跨域问题
2018/09/27 Javascript
vue刷新页面时去闪烁提升用户体验效果的实现方法
2018/12/10 Javascript
vue中使用rem布局代码详解
2019/10/30 Javascript
Vue中qs插件的使用详解
2020/02/07 Javascript
es6函数之尾递归用法实例分析
2020/04/25 Javascript
vue项目打包后提交到git上为什么没有dist这个文件的解决方法
2020/09/16 Javascript
[01:38:19]夜魇凡尔赛茶话会 第五期
2021/03/11 DOTA
python字符串编码识别模块chardet简单应用
2015/06/15 Python
python字符串,数值计算
2016/10/05 Python
django模板获取list中指定索引的值方式
2020/05/14 Python
python读取hdfs并返回dataframe教程
2020/06/05 Python
Python基于Socket实现简易多人聊天室的示例代码
2020/11/29 Python
毕业生的自我评价分享
2013/12/18 职场文书
失业者真诚求职信范文
2013/12/25 职场文书
质量管理标语
2014/06/12 职场文书
分公司总经理岗位职责
2014/07/30 职场文书
基层党组织建设整改方案
2014/09/16 职场文书
领导班子个人查摆问题对照检查材料
2014/10/02 职场文书
办公室班子四风问题对照检查材料
2014/10/04 职场文书
退休劳动合同怎么写?
2019/10/25 职场文书
用position:sticky完美解决小程序吸顶问题的实现方法
2021/04/24 HTML / CSS