万能的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 相关文章推荐
js限制checkbox勾选的个数以及php获取多个checkbbox的方法深入解析
Jul 18 PHP
PHP 输出URL的快捷方式示例代码
Sep 22 PHP
PHP反射使用实例和PHP反射API的中文说明
Jul 02 PHP
php天翼开放平台短信发送接口实现方法
Dec 22 PHP
php为字符串前后添加指定数量字符的方法
May 04 PHP
PHP用mb_string函数库处理与windows相关中文字符及Win环境下开启PHP Mb_String方法
Nov 11 PHP
php命令行(cli)模式下报require 加载路径错误的解决方法
Nov 23 PHP
PHP数组相加操作及与array_merge的区别浅析
Nov 26 PHP
Zend Framework入门应用实例详解
Dec 11 PHP
php中的异常和错误浅析
May 03 PHP
php简单处理XML数据的方法示例
May 19 PHP
PHP连接sftp并下载文件的方法教程
Aug 26 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 addslashes 函数详细分析说明
2009/06/23 PHP
php设计模式之命令模式的应用详解
2013/05/21 PHP
PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
2014/06/26 PHP
php格式化电话号码的方法
2015/04/24 PHP
PHP实现多维数组转字符串和多维数组转一维数组的方法
2015/08/08 PHP
详解php中反射的应用
2016/03/15 PHP
删除PHP数组中的重复元素的实现代码
2017/04/10 PHP
PHP基于自定义类随机生成姓名的方法示例
2017/08/05 PHP
Javascript学习笔记7 原型链的原理
2010/01/11 Javascript
jquery图片放大镜功能的实例代码
2013/03/26 Javascript
Checbox的操作含已选、未选及判断代码
2013/11/07 Javascript
javascript打印html内容功能的方法示例
2013/11/28 Javascript
jQuery判断元素是否存在的可靠方法
2014/05/06 Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
2014/12/31 Javascript
JS中多种方式创建对象详解
2016/03/22 Javascript
网页前端登录js按Enter回车键实现登陆的两种方法
2016/05/10 Javascript
jQuery复合事件结合toggle()方法的用法示例
2017/06/10 jQuery
javaScript封装的各种写法
2017/08/14 Javascript
Webpack中publicPath路径问题详解
2018/05/03 Javascript
node中IO以及定时器优先级详解
2019/05/10 Javascript
微信小程序录音实现功能并上传(使用node解析接收)
2020/02/26 Javascript
Python实现动态添加类的属性或成员函数的解决方法
2014/07/16 Python
在Python中操作字符串之rstrip()方法的使用
2015/05/19 Python
使用C#配合ArcGIS Engine进行地理信息系统开发
2016/02/19 Python
Python学习笔记之if语句的使用示例
2017/10/23 Python
Python实现KNN邻近算法
2021/01/28 Python
详解tensorflow实现迁移学习实例
2018/02/10 Python
pandas 转换成行列表进行读取与Nan处理的方法
2018/10/30 Python
Python进阶之自定义对象实现切片功能
2019/01/07 Python
python中web框架的自定义创建
2019/09/08 Python
解决jupyter notebook显示不全出现框框或者乱码问题
2020/04/09 Python
python3爬虫中多线程进行解锁操作实例
2020/11/25 Python
园林设计师自荐信
2013/11/18 职场文书
民族团结先进集体事迹材料
2014/05/22 职场文书
奖学金申请书(范文)
2019/08/14 职场文书
MySQL索引失效十种场景与优化方案
2023/05/08 MySQL