常用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错误提示failed to open stream: HTTP request failed!的完美解决方法
Jun 06 PHP
php调用Google translate_tts api实现代码
Aug 07 PHP
php中利用explode函数分割字符串到数组
Feb 08 PHP
ThinkPHP中使用ajax接收json数据的方法
Dec 18 PHP
php绘图之在图片上写中文和英文的方法
Jan 24 PHP
PHP通过加锁实现并发情况下抢码功能
Aug 10 PHP
php有效防止图片盗用、盗链的两种方法
Nov 01 PHP
php通过header发送自定义数据方法
Jan 18 PHP
PHP输出Excel PHPExcel的方法
Jul 26 PHP
PHP检查URL包含特定字符串实例方法
Feb 11 PHP
CodeIgniter框架实现的整合Smarty引擎DEMO示例
Mar 28 PHP
PHP替换Word中变量并导出PDF图片的实现方法
Nov 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读取txt文本文件并分页显示的方法
2015/03/11 PHP
使用ThinkPHP的自动完成实现无限级分类实例详解
2016/09/02 PHP
Yii2表单事件之Ajax提交实现方法
2017/05/04 PHP
JavaScript起点(严格模式深度了解)
2013/01/28 Javascript
浅析jQuery移动开发中内联按钮和分组按钮的编写
2015/12/04 Javascript
基于原生JS实现图片裁剪
2016/08/01 Javascript
JavaScript随机打乱数组顺序之随机洗牌算法
2016/08/02 Javascript
jQuery简单实现列表隐藏和显示效果示例
2016/09/12 Javascript
angularjs使用directive实现分页组件的示例
2017/02/07 Javascript
JavaScript高阶函数_动力节点Java学院整理
2017/06/28 Javascript
JS中常用的消息框总结
2018/02/24 Javascript
三分钟学会用ES7中的Async/Await进行异步编程
2018/06/14 Javascript
vue 获取视频时长的实例代码
2019/08/20 Javascript
python通过colorama模块在控制台输出彩色文字的方法
2015/03/19 Python
python实现备份目录的方法
2015/08/03 Python
Python实现堆排序的方法详解
2016/05/03 Python
Python插入Elasticsearch操作方法解析
2020/01/19 Python
python实现时间序列自相关图(acf)、偏自相关图(pacf)教程
2020/06/03 Python
python怎么提高计算速度
2020/06/11 Python
Django filter动态过滤与排序实现过程解析
2020/11/26 Python
详解Django关于StreamingHttpResponse与FileResponse文件下载的最优方法
2021/01/07 Python
床上用品全球在线购物:BeddingInn
2016/12/18 全球购物
前台文员岗位职责
2013/12/28 职场文书
电子商务个人职业生涯规划范文
2014/02/12 职场文书
婚礼主持结束词
2014/03/13 职场文书
领导班子对照检查剖析材料
2014/10/13 职场文书
合作协议书范本
2014/10/25 职场文书
党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
2015年教学管理工作总结
2015/05/20 职场文书
总经理致辞
2015/07/29 职场文书
宪法宣传标语100条
2019/10/15 职场文书
祝福语集锦:给满月宝宝的祝福语
2019/11/20 职场文书
简单了解 MySQL 中相关的锁
2021/05/25 MySQL
Python基础之变量的相关知识总结
2021/06/23 Python
HTML5+CSS+JavaScript实现捉虫小游戏设计和实现
2021/10/16 HTML / CSS
24年收藏2000多部退役军用电台
2022/02/18 无线电