万能的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中的类-什么叫类
Nov 20 PHP
模拟flock实现文件锁定
Feb 14 PHP
php array_filter除去数组中的空字符元素
Jun 21 PHP
PHP5.4中json_encode中文转码的变化小结
Jan 30 PHP
PHP无限分类(树形类)
Sep 28 PHP
PHP不用递归遍历目录下所有文件的代码
Jul 04 PHP
PHP静态文件生成类实例
Nov 29 PHP
php如何获取文件的扩展名
Oct 28 PHP
zend framework重定向方法小结
May 28 PHP
PHP大文件切割上传功能实例分析
Jul 01 PHP
浅析PHP中的 inet_pton 网络函数
Dec 16 PHP
PHP实现简单的协程任务调度demo示例
Feb 01 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
Laravel 4 初级教程之Pages、表单验证
2014/10/30 PHP
准确获得页面、窗口高度及宽度的JS
2006/11/26 Javascript
学习YUI.Ext第五日--做拖放Darg&amp;Drop
2007/03/10 Javascript
基于jquery的$.ajax async使用
2011/10/19 Javascript
jquery固定底网站底部菜单效果
2013/08/13 Javascript
了解了这些才能开始发挥jQuery的威力
2013/10/10 Javascript
document.getElementById获取控件对象为空的解决方法
2013/11/20 Javascript
javascript通过className来获取元素的简单示例代码
2014/01/10 Javascript
javascript中setTimeout的问题解决方法
2014/05/08 Javascript
提高NodeJS中SSL服务的性能
2014/07/15 NodeJs
仿JQuery输写高效JSLite代码的一些技巧
2015/01/13 Javascript
基于jQuery实现自动轮播旋转木马特效
2015/11/02 Javascript
javascript断点调试心得分享
2016/04/23 Javascript
jQuery实现百度登录框的动态切换效果
2017/04/21 jQuery
js如何获取网页所有图片
2017/05/12 Javascript
详解vue2.0脚手架的webpack 配置文件分析
2017/05/27 Javascript
Vue结合SignalR实现前后端实时消息同步
2017/09/19 Javascript
jQuery轮播图实例详解
2018/08/15 jQuery
微信小程序第三方框架对比 之 wepy / mpvue / taro
2019/04/10 Javascript
js实现课堂随机点名系统
2019/11/21 Javascript
python进阶教程之循环对象
2014/08/30 Python
Python动态加载模块的3种方法
2014/11/22 Python
Python计算字符宽度的方法
2016/06/14 Python
python实现csv格式文件转为asc格式文件的方法
2018/03/23 Python
Python算法的时间复杂度和空间复杂度(实例解析)
2019/11/19 Python
Python values()与itervalues()的用法详解
2019/11/27 Python
canvas实现俄罗斯方块的方法示例
2018/12/13 HTML / CSS
Html5新增标签与样式及让元素水平垂直居中
2019/07/11 HTML / CSS
如果NULL和0作为空指针常数是等价的,那我到底该用哪一个
2014/09/16 面试题
计算机科学系职业生涯规划书
2014/03/08 职场文书
中国梦我的梦演讲稿
2014/04/23 职场文书
我的梦想演讲稿1000字
2014/08/21 职场文书
党支部三会一课计划
2014/09/24 职场文书
交通事故案件代理词
2015/05/23 职场文书
Web前端:CSS最强总结 附详细代码
2021/03/31 HTML / CSS
详解MongoDB排序时内存大小限制与创建索引的注意事项
2022/05/06 MongoDB