常用PHP封装分页工具类


Posted in PHP onJanuary 14, 2017

分页基本上是每个项目都会使用到的,所以呢,把它封装成一个工具类,以后直接调用就可以了(虽然TP框架的灰常强大,但是自己封一个也未尝不可。),这样既省时又省力还赚‘工分'。

我封的这个分页工具类还比较完整,有首页,上一页,下一页,末页和可选数量的页码数量(也就是当页面很多时,只显示依据参数传入的个数),还可以依据需求选择是否使用下拉跳转页面功能。

<?php
/**
 * 分页工具类
 */

class page{

  /**
   * 返回分页所需字符串
   * @param $pageNum int 显示的页码
   * @param $pageCount int 总的页码数 
   * @param $url string 当前页码路径
   * @param $Count string 页码列表里显示的个数
   * @param $selected bool 是否开启下拉框选择功能。默认不开启
   * return $strpage string 分页字符串
   */
  function showPage($pageNum,$pageCount,$url,$Count = 5,$selected = false){
    $pageMaxVal = $Count - 1;// 页码到达最大时,页码列表里第一个页码与最大页码的差
    $pageMiddleVal = ceil($Count / 2);// 依据需要显示页码个数得到的中间值
    $pageMiddleCha = floor($Count / 2);// 依据需要显示页码个数得到的当前页码与第一个页码的差

    // 判断url是否已经存在?
    if(!strpos($url, '?')){ // 未存在?
      $url .= '?';
    }else{
      $url .= '&';
    }

    // 首页
    $strpage = "<a href='{$url}num=1'>首页</a>";

    // 上一页
    $preNum = $pageNum > 1 ? $pageNum - 1 : 1;

    // 当页码为第一页时取消上一页按钮的功能
    $strpage .= $pageNum == 1 ? "<a class='unshow'>上一页</a>" : "<a href='{$url}num={$preNum}'>上一页</a>";

    // 显示的页码列表中的第一个页码
    $startPage = $pageNum > $pageMiddleVal ? $pageNum - $pageMiddleCha : 1;
    // 起始页码最大值 = 总页数 - 4
    if($pageCount - $pageMaxVal > 0 && $startPage > $pageCount - $pageMaxVal){
      $startPage = $pageCount - $pageMaxVal;
    }

    // 显示的页码列表中的最后一个页码
    $endPage = $startPage<($pageCount - $pageMaxVal) ? $startPage + $pageMaxVal : $pageCount;

    // 中间数字页码
    for($i=$startPage;$i<=$endPage;$i++){
      if($i == $pageNum){
        $strpage .= "<span>$i</span>";
      }else{
        $strpage .= "<a href='{$url}num=$i'>$i</a>";
      }
    }

    // 下一页
    $nextNum = $pageNum < $pageCount ? $pageNum + 1 : $pageCount;

    // 当页码为最后一页时取消下一页按钮的功能
    $strpage .= $pageNum == $pageCount ? "<a class='unshow'>下一页</a>" : "<a href='{$url}num={$nextNum}'>下一页</a>";

    // 末页
    $strpage .= "<a href='{$url}num={$pageCount}'>末页</a>";

    // 总页数
    $strpage .= "总页数:{$pageCount}  ";

    // 判断是否是否选择页码功能
    if($selected){ // 选择了
      $strpage .= "当前页码:<select onchange=\"location.href='{$url}num=' + this.value \">";
        for($i = 1; $i <= $pageCount;$i++){
          if($i == $pageNum){
            $strpage .= "<option value='$i' selected='selected'>$i</option>";
          }else{
            $strpage .= "<option value='$i'>$i</option>";
          }
        }
        
      $strpage .= "</select>";
    }

    return $strpage;
  }

}

接下来应该会PO完MySQL剩余部分知识吧,希望大家继续关注。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php intval的测试代码发现问题
Jul 27 PHP
php实现首页链接查询 友情链接检查的代码
Jan 05 PHP
无法载入 mcrypt 扩展,请检查 PHP 配置终极解决方案
Jul 18 PHP
探讨PHP函数ip2long转换IP时数值太大产生负数的解决方法
Jun 06 PHP
解析mysql 表中的碎片产生原因以及清理
Jun 22 PHP
CentOS 7.2 下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法详解(mini版本)
Sep 01 PHP
Yii2针对游客、用户防范规则和限制的解决方法分析
Oct 08 PHP
PHP读取zip文件的方法示例
Nov 17 PHP
ThinkPHP实现生成和校验验证码功能
Apr 28 PHP
浅谈thinkphp5 instance 的简单实现
Jul 30 PHP
PHP网页安全认证的实例详解
Sep 28 PHP
Laravel5.5 数据库迁移:创建表与修改表示例
Oct 23 PHP
详解php用curl调用接口方法,get和post两种方式
Jan 13 #PHP
PHP编程 SSO详细介绍及简单实例
Jan 13 #PHP
php 解决扫描二维码下载跳转问题
Jan 13 #PHP
PHP使用递归算法无限遍历数组示例
Jan 13 #PHP
PHP字符串逆序排列实现方法小结【strrev函数,二分法,循环法,递归法】
Jan 13 #PHP
PHP使用strrev翻转中文乱码问题的解决方法
Jan 13 #PHP
使用php完成常见的文件上传功能(推荐)
Jan 13 #PHP
You might like
php 模拟POST提交的2种方法详解
2013/06/17 PHP
解析PHP中VC6 X86和VC9 X86的区别及 Non Thread Safe的意思
2013/06/28 PHP
PHP时间和日期函数详解
2015/05/08 PHP
PHP中类的自动加载的方法
2017/03/17 PHP
CentOS7.0下安装PHP5.6.30服务的教程详解
2018/09/29 PHP
jquery 查找新建元素代码
2010/07/06 Javascript
jcarousellite.js 基于Jquery的图片无缝滚动插件
2010/12/30 Javascript
方便实用的jQuery checkbox复选框全选功能简单实例
2013/10/09 Javascript
seaJs的模块定义和模块加载浅析
2014/06/06 Javascript
JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)
2014/08/16 Javascript
javascript类型系统 Array对象学习笔记
2016/01/09 Javascript
Bootstrap按钮组简单实现代码
2017/03/06 Javascript
js判断手机系统是android还是ios
2017/03/07 Javascript
Vue页面骨架屏的实现方法
2018/05/22 Javascript
详解vuex之store源码简单解析
2019/06/13 Javascript
解决vue字符串换行问题(绝对管用)
2020/08/06 Javascript
[44:30]完美世界DOTA2联赛PWL S2 GXR vs Magma 第一场 11.25
2020/11/26 DOTA
Python lambda函数基本用法实例分析
2018/03/16 Python
用pandas中的DataFrame时选取行或列的方法
2018/07/11 Python
实例讲解python中的协程
2018/10/08 Python
使用Python开发SQLite代理服务器的方法
2018/12/07 Python
python实现逐个读取txt字符并修改
2018/12/24 Python
python3.6下Numpy库下载与安装图文教程
2019/04/02 Python
django Admin文档生成器使用详解
2019/07/22 Python
python文字转语音的实例代码分析
2019/11/12 Python
Python正则表达式急速入门(小结)
2019/12/16 Python
Python基于Twilio及腾讯云实现国际国内短信接口
2020/06/18 Python
使用matplotlib的pyplot模块绘图的实现示例
2020/07/12 Python
用python对excel查重
2020/12/07 Python
介绍一下linux的文件系统
2015/10/06 面试题
幼儿教师自我鉴定
2013/11/02 职场文书
文明风采获奖感言
2014/02/18 职场文书
学习雷锋倡议书
2014/04/15 职场文书
植树造林的宣传标语
2014/06/23 职场文书
《火烧云》教学反思
2016/02/23 职场文书
新手开公司创业注意事项有哪些?
2019/07/29 职场文书