常用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执行速度全攻略
Oct 09 PHP
一个PHP操作Access类(PHP+ODBC+Access)
Jan 02 PHP
用Php编写注册后Email激活验证的实例代码
Mar 11 PHP
PHP设计模式之迭代器模式的深入解析
Jun 13 PHP
ThinkPHP CURD方法之table方法详解
Jun 18 PHP
利用PHP脚本在Linux下用md5函数加密字符串的方法
Jun 29 PHP
php数字每三位加逗号的功能函数
Oct 22 PHP
php项目开发中用到的快速排序算法分析
Jun 25 PHP
php7安装yar扩展的方法详解
Aug 03 PHP
thinkphp中U方法按路由规则生成url的方法
Mar 12 PHP
php 获取xml接口数据的处理方法
May 31 PHP
php实现微信小程序授权登录功能(实现流程)
Nov 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
PHP 选项及相关信息函数库
2006/12/04 PHP
安装APACHE
2007/01/15 PHP
PHP版自动生成文章摘要
2008/07/23 PHP
用javascript编写的第一人称射击游戏
2007/02/25 Javascript
javascript 限制输入脚本大全
2009/11/03 Javascript
关于js注册事件的常用方法
2013/04/03 Javascript
javascript制作游戏开发碰撞检测的封装代码
2015/03/31 Javascript
jquery+CSS3实现3D拖拽相册效果
2016/07/18 Javascript
使用JS轻松实现ionic调用键盘搜索功能(超实用)
2016/09/06 Javascript
Vue.js组件tree实现无限级树形菜单
2016/12/02 Javascript
ES2015 Symbol 一种绝不重复的值
2016/12/25 Javascript
JS实现直接运行html代码的方法
2017/03/13 Javascript
bootstrap是什么_动力节点Java学院整理
2017/07/14 Javascript
js实现鼠标单击Tab表单切换效果
2018/05/16 Javascript
小程序开发基础之view视图容器
2018/08/21 Javascript
extjs4图表绘制之折线图实现方法分析
2020/03/06 Javascript
Vue——解决报错 Computed property &quot;****&quot; was assigned to but it has no setter.
2020/12/19 Vue.js
[28:28]Ti4 冒泡赛第二天NEWBEE vs NaVi 2
2014/07/15 DOTA
[05:15]2018年度CS GO社区贡献奖-完美盛典
2018/12/16 DOTA
paramiko模块安装和使用(远程登录服务器)
2014/01/27 Python
Flask框架学习笔记(一)安装篇(windows安装与centos安装)
2014/06/25 Python
Python多线程编程(六):可重入锁RLock
2015/04/05 Python
Python编程中time模块的一些关键用法解析
2016/01/19 Python
python读写json文件的简单实现
2017/04/11 Python
python-opencv颜色提取分割方法
2018/12/08 Python
python3实现斐波那契数列(4种方法)
2019/07/15 Python
Python有参函数使用代码实例
2020/01/06 Python
TensorFlow keras卷积神经网络 添加L2正则化方式
2020/05/22 Python
python中最小二乘法详细讲解
2021/02/19 Python
中国包裹转运寄送国际服务:Famiboat
2019/07/24 全球购物
大学生创业计划书的范文
2014/01/07 职场文书
律师函格式范本
2015/05/27 职场文书
女方家长婚礼答谢词
2015/09/29 职场文书
机械原理课程设计心得体会
2016/01/15 职场文书
Python多个MP4合成视频的实现方法
2021/07/16 Python
Python 数据可视化之Seaborn详解
2021/11/02 Python