万能的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函数,php爱好者站推荐
Mar 19 PHP
PHP页面中文乱码分析
Oct 29 PHP
淘宝ip地址查询类分享(利用淘宝ip库)
Jan 07 PHP
php socket实现的聊天室代码分享
Aug 16 PHP
php多线程实现方法及用法实例详解
Oct 26 PHP
PHP查询并删除数据库多列重复数据的方法(利用数组函数实现)
Feb 23 PHP
PHP实现二维数组按某列进行排序的方法
Nov 18 PHP
PHP实现的XXTEA加密解密算法示例
Aug 28 PHP
PHP实现简单计算器小程序
Aug 28 PHP
PDO::getAvailableDrivers讲解
Jan 28 PHP
php加速缓存器opcache,apc,xcache,eAccelerator原理与配置方法实例分析
Mar 02 PHP
PHP后门隐藏的一些技巧总结
Nov 04 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实现根据字符串生成对应数组的方法
2014/09/22 PHP
再谈PHP中单双引号的区别详解
2016/06/12 PHP
laravel学习笔记之模型事件的几种用法示例
2017/08/15 PHP
父窗口获取弹出子窗口文本框的值
2006/06/27 Javascript
[推荐]javascript 面向对象技术基础教程
2009/03/03 Javascript
JavaScript中的View-Model使用介绍
2011/08/11 Javascript
常用的JavaScript模板引擎介绍
2015/02/28 Javascript
jQuery实现弹出带遮罩层的居中浮动窗口效果
2016/09/12 Javascript
JS button按钮实现submit按钮提交效果
2016/11/01 Javascript
Echarts基本用法_动力节点Java学院整理
2017/08/11 Javascript
微信小程序实现图片放大预览功能
2020/10/22 Javascript
JS使用setInterval实现的简单计时器功能示例
2018/04/19 Javascript
vue中子组件的methods中获取到props中的值方法
2018/08/27 Javascript
微信小程序实现Session功能及无法获取session问题的解决方法
2019/05/07 Javascript
如何用webpack4.0撸单页/多页脚手架 (jquery, react, vue, typescript)
2019/06/18 jQuery
p5.js绘制旋转的正方形
2019/10/23 Javascript
JavaScript判断浏览器版本的方法
2019/11/03 Javascript
解决vue组件中click事件失效的问题
2019/11/09 Javascript
[01:00:52]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第一场
2018/04/05 DOTA
Python批量修改文件后缀的方法
2014/01/26 Python
Django入门使用示例
2017/12/12 Python
python创建与遍历List二维列表的方法
2019/08/16 Python
Python 之 Json序列化嵌套类方式
2020/02/27 Python
Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块
2020/11/01 Python
详解CSS3中使用gradient实现渐变效果的方法
2015/08/18 HTML / CSS
纯CSS3打造属于自己的“小黄人”
2016/03/14 HTML / CSS
CSS3实现红包抖动效果
2020/12/23 HTML / CSS
HTML 5.1来了 9月份正式发布 更新内容预览
2016/04/26 HTML / CSS
JD Sports比利时官网:英国领先的运动鞋和运动服饰零售商
2018/10/10 全球购物
生产部管理制度
2014/01/31 职场文书
班级入场式解说词
2014/02/01 职场文书
邹越感恩父母演讲稿
2014/08/28 职场文书
群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
高中生逃课检讨书
2014/10/10 职场文书
Oracle11g R2 安装教程完整版
2021/06/04 Oracle
关于Oracle12C默认用户名system密码不正确的解决方案
2021/10/16 Oracle