万能的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 相关文章推荐
php4的session功能评述(三)
Oct 09 PHP
php实现无限级分类实现代码(递归方法)
Jan 01 PHP
一些需要禁用的PHP危险函数(disable_functions)
Feb 23 PHP
解析PHPExcel使用的常用说明以及把PHPExcel整合进CI框架的介绍
Jun 24 PHP
php pki加密技术(openssl)详解
Jul 01 PHP
json的键名为数字时的调用方式(示例代码)
Nov 15 PHP
浅谈ThinkPHP的URL重写
Nov 25 PHP
yii实现CheckBox复选框在同一行显示的方法
Dec 03 PHP
PHP保存带BOM文件的方法
Feb 12 PHP
WordPress中创建用户角色的相关PHP函数使用详解
Dec 25 PHP
PHP生成制作验证码的简单实例
Jun 12 PHP
php微信开发自定义菜单
Aug 27 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
BBS(php &amp; mysql)完整版(二)
2006/10/09 PHP
我的论坛源代码(六)
2006/10/09 PHP
让PHP支持页面回退的两种方法
2008/01/10 PHP
如何在symfony中导出为CSV文件中的数据
2011/10/06 PHP
PHP数据库调用类调用实例(详细注释)
2012/07/12 PHP
PHP简单选择排序算法实例
2015/01/26 PHP
PHP结合Mysql数据库实现留言板功能
2016/03/04 PHP
PHP的PDO错误与错误处理
2019/01/27 PHP
laravel5表单唯一验证的实例代码
2019/09/30 PHP
详解将数据从Laravel传送到vue的四种方式
2019/10/16 PHP
加载jQuery后$冲突的解决办法
2010/07/09 Javascript
使用js dom和jquery分别实现简单增删改
2014/09/11 Javascript
javascript实现全角与半角字符的转换
2015/01/07 Javascript
js贪吃蛇网页版游戏特效代码分享(挑战十关)
2015/08/24 Javascript
js图片跟随鼠标移动代码
2015/11/26 Javascript
基于Bootstrap使用jQuery实现简单可编辑表格
2016/05/04 Javascript
AngularJS基础 ng-model 指令详解及示例代码
2016/08/02 Javascript
D3.js实现雷达图的方法详解
2016/09/22 Javascript
浅谈MUI框架中加载外部网页或服务器数据的方法
2018/01/31 Javascript
JavaScript学习笔记之图片库案例分析
2019/01/08 Javascript
详解基于element的区间选择组件校验(交易金额)
2021/01/07 Javascript
[原创]Python入门教程4. 元组基本操作
2018/10/31 Python
Django框架实现分页显示内容的方法详解
2019/05/10 Python
Python小程序 控制鼠标循环点击代码实例
2019/10/08 Python
Django用户认证系统如何实现自定义
2020/11/12 Python
美国大型的健身社区和补充商店:Bodybuilding.com
2016/09/06 全球购物
美国顶级户外凉鞋品牌:Chacos
2017/03/27 全球购物
全世界最美丽的四星和五星级酒店预订:Prestigia.com
2017/11/15 全球购物
传统软件工程与面向对象的软件工程有什么区别
2012/05/31 面试题
大学生英语演讲稿
2014/04/24 职场文书
电子专业自荐信
2014/07/01 职场文书
国际贸易求职信
2014/07/05 职场文书
2014年学校党建工作汇报材料
2014/11/02 职场文书
入党群众意见范文
2015/06/02 职场文书
荒岛余生观后感
2015/06/09 职场文书
资深HR教你写好简历中的自我评价
2019/05/07 职场文书