常用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 EOT定界符的使用详解
Sep 30 PHP
使用XDebug调试及单元测试覆盖率分析
Jan 27 PHP
php 调试利器debug_print_backtrace()
Jul 23 PHP
PHP导出EXCEL快速开发指南--PHPEXCEL的使用详解
Jun 03 PHP
php判断手机访问还是电脑访问示例分享
Jan 20 PHP
php获取一个变量的名字的方法
Sep 05 PHP
PHP查询快递信息的方法
Mar 07 PHP
Yii2增加验证码步骤详解
Apr 25 PHP
修改Laravel5.3中的路由文件与路径
Aug 10 PHP
PHP通过CURL实现定时任务的图片抓取功能示例
Oct 03 PHP
bindParam和bindValue的区别以及在Yii2中的使用详解
Mar 12 PHP
YII框架实现自定义第三方扩展操作示例
Apr 26 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极大的增强功能和性能
2006/10/09 PHP
PHP实现一个简单url路由功能实例
2016/11/05 PHP
jQuery 开天辟地入门篇一
2009/12/09 Javascript
10个基于jQuery或JavaScript的WYSIWYG 编辑器整理
2010/05/06 Javascript
如何在父窗口中得知window.open()出的子窗口关闭事件
2013/10/15 Javascript
利用javascript数组长度循环数组内所有元素
2013/12/27 Javascript
基于vuejs+webpack的日期选择插件
2020/05/21 Javascript
Vue.js组件tree实现省市多级联动
2016/12/02 Javascript
微信小程序中使元素占满整个屏幕高度实现方法
2016/12/14 Javascript
webstorm添加vue.js支持的方法教程
2017/07/05 Javascript
vue中的scope使用详解
2017/10/29 Javascript
详解vue 计算属性与方法跟侦听器区别(面试考点)
2018/04/23 Javascript
vue项目打包后上传至GitHub并实现github-pages的预览
2019/05/06 Javascript
vue项目打包后怎样优雅的解决跨域
2019/05/26 Javascript
微信小程序文章列表功能完整实例
2020/06/03 Javascript
python中关于时间和日期函数的常用计算总结(time和datatime)
2013/03/08 Python
Python中的XML库4Suite Server的介绍
2015/04/14 Python
Python的Django框架中设置日期和字段可选的方法
2015/07/17 Python
20个常用Python运维库和模块
2018/02/12 Python
Python Requests模拟登录实现图书馆座位自动预约
2018/04/27 Python
OpenCV-Python 摄像头实时检测人脸代码实例
2019/04/30 Python
keras 自定义loss层+接受输入实例
2020/06/28 Python
python 爬虫请求模块requests详解
2020/12/04 Python
详解px单位html5响应式方案
2018/03/08 HTML / CSS
Html5嵌入钉钉的实现示例
2020/06/04 HTML / CSS
Omio西班牙:全欧洲低价大巴、火车和航班搜索和比价
2017/02/11 全球购物
巴西图书和电子产品购物网站:Saraiva
2017/06/07 全球购物
实习教师个人的自我评价
2013/11/08 职场文书
超市活动计划书
2014/04/24 职场文书
给学校建议书范文
2014/05/13 职场文书
设备管理实施方案
2014/05/31 职场文书
学校党的群众路线教育实践活动整改措施
2014/10/25 职场文书
人事行政主管岗位职责
2015/04/09 职场文书
Java数据开发辅助工具Docker与普通程序使用方法
2021/09/15 Java/Android
Python实现双向链表基本操作
2022/05/25 Python
js前端图片加载异常兜底方案
2022/06/21 Javascript