常用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 相关文章推荐
漂亮但不安全的CTB
Oct 09 PHP
PHP 验证码的实现代码
Jul 17 PHP
is_uploaded_file函数引发的不能上传文件问题
Oct 29 PHP
PHP准确取得服务器IP地址的方法
Jun 02 PHP
关于php微信订阅号开发之token验证后自动发送消息给订阅号但是没有消息返回的问题
Dec 21 PHP
PHP6新特性分析
Mar 03 PHP
PHP使用token防止表单重复提交的方法
Apr 07 PHP
thinkphp3.x中session方法的用法分析
May 20 PHP
php微信公众平台配置接口开发程序
Sep 22 PHP
PHP空值检测函数与方法汇总
Nov 19 PHP
php中访问修饰符的知识点总结
Jan 27 PHP
php和C#的yield迭代器实现方法对比分析
Jul 17 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
基于Zend的Config机制的应用分析
2013/05/02 PHP
浅析PHP安装扩展mcrypt以及相关依赖项(PHP安装PECL扩展的方法)
2013/07/05 PHP
php在数组中查找指定值的方法
2015/03/17 PHP
php+mysql实现简单登录注册修改密码网页
2016/11/30 PHP
javascript 学习之旅 (3)
2009/02/05 Javascript
jQuery中fadeIn、fadeOut、fadeTo的使用方法(图片显示与隐藏)
2013/05/08 Javascript
jquery 字符串切割函数substring的用法说明
2014/02/11 Javascript
js调用iframe实现打印页面内容的方法
2014/03/04 Javascript
详解js中call与apply关键字的作用
2016/11/21 Javascript
js处理层级数据结构的方法小结
2017/01/17 Javascript
Angualrjs和bootstrap相结合实现数据表格table
2017/03/30 Javascript
Form表单上传文件(type=&quot;file&quot;)的使用
2017/08/03 Javascript
用Vue.extend构建消息提示组件的方法实例
2017/08/08 Javascript
jQuery niceScroll滚动条错位问题的解决方法
2018/02/03 jQuery
Vue + Element UI图片上传控件使用详解
2019/08/20 Javascript
vue路由守卫及路由守卫无限循环问题详析
2019/09/05 Javascript
javascript+Canvas实现画板功能
2020/06/23 Javascript
python写的一个文本编辑器
2014/01/23 Python
python抓取最新博客内容并生成Rss
2015/05/17 Python
python实现超简单的视频对象提取功能
2018/06/04 Python
pyqt5实现绘制ui,列表窗口,滚动窗口显示图片的方法
2019/06/20 Python
Python中拆分字符串的操作方法
2019/07/23 Python
Python多线程获取返回值代码实例
2020/02/17 Python
解决Django部署设置Debug=False时xadmin后台管理系统样式丢失
2020/04/07 Python
Softmax函数原理及Python实现过程解析
2020/05/22 Python
jupyter notebook更换皮肤主题的实现
2021/01/07 Python
HTML5中原生的右键菜单创建方法
2016/06/28 HTML / CSS
Silk’n激光脱毛器官网:silkn.com
2016/10/06 全球购物
大学生实习期自我评价范文
2013/10/03 职场文书
会计出纳岗位职责
2013/12/25 职场文书
职工运动会邀请函
2014/02/02 职场文书
银行批评与自我批评
2014/02/10 职场文书
春节慰问简报
2015/07/21 职场文书
大学生社区义工服务心得体会
2016/01/22 职场文书
助学金申请书该怎么写?
2019/07/16 职场文书
Python下opencv库的安装过程及问题汇总
2021/06/11 Python