常用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 mvc开发模式的感想
Jun 28 PHP
获取PHP警告错误信息的解决方法
Jun 03 PHP
php 模拟GMAIL,HOTMAIL(MSN),YAHOO,163,126邮箱登录的详细介绍
Jun 18 PHP
linux系统下php安装mbstring扩展的二种方法
Jan 20 PHP
PHP根据传入参数合并多个JS和CSS文件的简单实现
Jun 13 PHP
PHP获取一年中每个星期的开始和结束日期的方法
Feb 12 PHP
PHP实现一维数组转二维数组的方法
Feb 25 PHP
PHP统计目录中文件以及目录中目录大小的方法
Jan 09 PHP
PHP生成静态HTML文档实现代码
Jun 23 PHP
ThinkPHP实现的rsa非对称加密类示例
May 29 PHP
php和C#的yield迭代器实现方法对比分析
Jul 17 PHP
Thinkphp5框架异常处理操作实例分析
Jun 03 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
WINDOWS服务器安装多套PHP的另类解决方案
2006/10/09 PHP
异步加载技术实现当滚动条到最底部的瀑布流效果
2014/09/16 PHP
PHP的命令行命令使用指南
2015/08/18 PHP
PHP计算数组中值的和与乘积的方法(array_sum与array_product函数)
2016/04/01 PHP
PHP微信API接口类
2016/08/22 PHP
ajax中get和post的说明及使用与区别
2012/12/23 Javascript
jQuery实现div浮动层跟随页面滚动效果
2014/02/11 Javascript
javascript面向对象之定义成员方法实例分析
2015/01/13 Javascript
CKEditor无法验证的解决方案(js验证+jQuery Validate验证)
2016/05/09 Javascript
BootStrap实现手机端轮播图左右滑动事件
2016/10/13 Javascript
Centos7 中 Node.js安装简单方法
2016/11/02 Javascript
如何防止INPUT按回车自动提交表单FORM
2016/12/06 Javascript
详解Javascript百度地图接口开发文档中的类和方法
2017/02/07 Javascript
Angular2实现组件交互的方法分析
2017/12/19 Javascript
VUE重点问题总结
2018/03/19 Javascript
基于ionic实现下拉刷新功能
2018/05/10 Javascript
Vue自定义弹窗指令的实现代码
2018/08/13 Javascript
jQuery滑动效果实现方法分析
2018/09/05 jQuery
jQuery.parseJSON()函数详解
2019/02/28 jQuery
Vue配置marked链接添加target=&quot;_blank&quot;的方法
2019/07/19 Javascript
微信小程序 可搜索的地址选择实现详解
2019/08/28 Javascript
[01:11:21]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第三场 3月7日
2021/03/11 DOTA
python实现从字符串中找出字符1的位置以及个数的方法
2014/08/25 Python
django认证系统实现自定义权限管理的方法
2018/07/16 Python
在python plt图表中文字大小调节的方法
2019/07/08 Python
Python3 ffmpeg视频转换工具使用方法解析
2020/08/10 Python
Python可以用来做什么
2020/11/23 Python
丝芙兰巴西官方商城:SEPHORA巴西
2016/10/31 全球购物
新锐科技Java程序员面试题
2016/07/25 面试题
什么是ESB?请介绍一下ESB?
2015/05/27 面试题
办理护照介绍信
2014/01/16 职场文书
2014国庆节幼儿园亲子活动方案
2014/09/16 职场文书
领导班子党的群众路线对照检查材料
2014/09/25 职场文书
工作失职检讨书范文
2015/05/05 职场文书
学前教育见习总结
2015/06/23 职场文书
html用代码制作虚线框怎么做? dw制作虚线圆圈的技巧
2022/12/24 HTML / CSS