常用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 地址栏信息的获取代码
Jan 07 PHP
php foreach 参数强制类型转换的问题
Dec 10 PHP
PHP与MySQL开发的8个技巧小结
Dec 17 PHP
PHP持久连接mysql_pconnect()函数使用介绍
Feb 05 PHP
php获取本地图片文件并生成xml文件输出具体思路
Apr 27 PHP
个人写的PHP验证码生成类分享
Aug 21 PHP
php生成RSS订阅的方法
Feb 13 PHP
PHP页面转UTF-8中文编码乱码的解决办法
Oct 20 PHP
php对文件夹进行相关操作(遍历、计算大小)
Nov 04 PHP
常用PHP数组排序函数归纳
Aug 08 PHP
PHPCMS手机站伪静态设置详细教程
Feb 06 PHP
PHP处理Ajax请求与Ajax跨域问题
Feb 13 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
Yii框架实现邮箱激活的方法【数字签名】
2016/10/18 PHP
Thinkphp 框架配置操作之动态配置、扩展配置及批量配置实例分析
2020/05/15 PHP
js实现全屏漂浮广告移入光标停止移动
2013/12/02 Javascript
Iframe实现跨浏览器自适应高度解决方法
2014/09/02 Javascript
JS+DIV+CSS实现仿表单下拉列表效果
2015/08/18 Javascript
微信小程序中单位rpx和rem的使用
2016/12/06 Javascript
深入理解JavaScript中的for循环
2017/02/07 Javascript
jQuery实现按比例缩放图片的方法
2017/04/29 jQuery
Bootstrap响应式表格详解
2017/05/23 Javascript
JS实现的JSON序列化操作简单示例
2018/07/02 Javascript
vue.js 实现点击按钮动态添加li的方法
2018/09/07 Javascript
浅谈webpack4 图片处理汇总
2018/09/12 Javascript
简单说说angular.json文件的使用
2018/10/29 Javascript
vue项目中使用bpmn为节点添加颜色的方法
2020/04/30 Javascript
[00:32]2018DOTA2亚洲邀请赛Liquid出场
2018/04/03 DOTA
忘记ftp密码使用python ftplib库暴力破解密码的方法示例
2014/01/22 Python
基于python实现微信模板消息
2015/12/21 Python
python学生信息管理系统
2018/03/13 Python
python使用筛选法计算小于给定数字的所有素数
2018/03/19 Python
Python查看微信撤回消息代码
2018/06/07 Python
PyCharm 设置SciView工具窗口的方法
2019/01/15 Python
python文件读写代码实例
2019/10/21 Python
关于sys.stdout和print的区别详解
2019/12/05 Python
Python爬虫解析网页的4种方式实例及原理解析
2019/12/30 Python
TensorFlow获取加载模型中的全部张量名称代码
2020/02/11 Python
Django用户身份验证完成示例代码
2020/04/03 Python
python 比较字典value的最大值的几种方法
2020/04/17 Python
HTML5 图片悬停放大的实现代码示例
2019/12/04 HTML / CSS
Java程序员综合测试题
2014/04/25 面试题
中学生学雷锋活动心得体会
2014/03/10 职场文书
《金色的脚印》教后反思
2014/04/23 职场文书
承租经营合作者协议书
2014/10/01 职场文书
房屋财产继承协议书范本
2014/11/03 职场文书
党的群众路线教育实践活动个人对照检查材料(企业)
2014/11/05 职场文书
用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X
2021/06/11 Python
LeetCode189轮转数组python示例
2022/08/05 Python