万能的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边学边教》(02.Apache+PHP环境配置――下篇)
Dec 13 PHP
mysql中存储过程、函数的一些问题
Feb 14 PHP
php 无限分类的树类代码
Dec 03 PHP
写出高质量的PHP程序
Feb 04 PHP
PHP取整数函数常用的四种方法小结
Jul 05 PHP
如何在php中正确的使用json
Aug 06 PHP
PHP遍历并打印指定目录下所有文件实例
Feb 10 PHP
php中的路径问题与set_include_path使用介绍
Feb 11 PHP
PHP处理Oracle的CLOB实例
Nov 03 PHP
Symfony2使用第三方库Upload制作图片上传实例详解
Feb 04 PHP
浅谈php中fopen不能创建中文文件名文件的问题
Feb 06 PHP
浅谈php调用python文件
Mar 29 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
全国FM电台频率大全 - 28 甘肃省
2020/03/11 无线电
PHP中函数rand和mt_rand的区别比较
2012/12/26 PHP
php检测图片木马多进制编程实践
2013/04/11 PHP
Ext JS添加子组件的误区探讨
2013/06/28 Javascript
yepnope.js使用详解及示例分享
2014/06/23 Javascript
jQuery事件绑定与解除绑定实现方法
2015/04/15 Javascript
基于jquery实现页面滚动到底自动加载数据的功能
2015/12/19 Javascript
浅谈js中function的参数默认值
2017/02/20 Javascript
解析Vue2.0双向绑定实现原理
2017/02/23 Javascript
使用jQuery ajaxupload插件实现无刷新上传文件
2017/04/23 jQuery
vue实现动态添加数据滚动条自动滚动到底部的示例代码
2018/07/06 Javascript
webpack多入口多出口的实现方法
2018/08/17 Javascript
解决vue+element 键盘回车事件导致页面刷新的问题
2018/08/25 Javascript
vue 移动端注入骨架屏的配置方法
2019/06/25 Javascript
[01:03]PWL开团时刻DAY6——别打我
2020/11/05 DOTA
Python使用稀疏矩阵节省内存实例
2014/06/27 Python
Python生成不重复随机值的方法
2015/05/11 Python
深入浅析python定时杀进程
2016/06/06 Python
Python基于回溯法子集树模板解决旅行商问题(TSP)实例
2017/09/05 Python
python导出hive数据表的schema实例代码
2018/01/22 Python
解决Python print输出不换行没空格的问题
2018/11/14 Python
使用Python向DataFrame中指定位置添加一列或多列的方法
2019/01/29 Python
浅谈pandas筛选出表中满足另一个表所有条件的数据方法
2019/02/08 Python
python2.7 安装pip的方法步骤(管用)
2019/05/05 Python
python中对_init_的理解及实例解析
2019/10/11 Python
python多进程重复加载的解决方式
2019/12/13 Python
python调用有道智云API实现文件批量翻译
2020/10/10 Python
英国网上超市:Ocado
2020/03/05 全球购物
通信生自我鉴定
2014/01/18 职场文书
代理商会议邀请函
2014/01/27 职场文书
学习雷锋精神心得体会范文
2014/03/12 职场文书
《长城和运河》教学反思
2014/04/14 职场文书
人工作失职检讨书
2015/05/05 职场文书
导游词之太湖
2019/10/08 职场文书
前端JavaScript大管家 package.json
2021/11/02 Javascript
面试官问我Mysql的存储引擎了解多少
2022/08/05 MySQL