常用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读取30天之内的根据算法排序的代码
Apr 06 PHP
php 各种应用乱码问题的解决方法
May 09 PHP
php程序的国际化实现方法(利用gettext)
Aug 14 PHP
smarty模板判断数组为空的方法
Jun 10 PHP
关于PHP中Session文件过多的问题及session文件保存位置
Mar 17 PHP
php微信开发之上传临时素材
Jun 24 PHP
php图片添加水印例子
Jul 20 PHP
Yii2框架数据库简单的增删改查语法小结
Aug 31 PHP
mysql desc(DESCRIBE)命令实例讲解
Sep 24 PHP
超强多功能php绿色集成环境详解
Jan 25 PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
Mar 06 PHP
php在linux环境中如何使用redis详解
Dec 15 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
其他功能
2006/10/09 PHP
sae使用smarty模板的方法
2013/12/17 PHP
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
2014/04/29 PHP
php页面缓存方法小结
2015/01/10 PHP
PHP使用strtotime计算两个给定日期之间天数的方法
2015/03/18 PHP
DOM精简教程
2006/10/03 Javascript
简明json介绍
2008/09/28 Javascript
JavaScript入门之对象与JSON详解
2011/10/21 Javascript
js 操作select和option常用代码整理
2012/12/13 Javascript
JS判断字符串长度的5个方法(区分中文和英文)
2014/03/18 Javascript
将form表单中的元素转换成对象的方法适用表单提交
2014/05/02 Javascript
jQuery实现瀑布流布局
2014/12/12 Javascript
jQuery选择器及jquery案例详解(必看)
2016/05/20 Javascript
AngularJs concepts详解及示例代码
2016/09/01 Javascript
js中编码函数:escape,encodeURI与encodeURIComponent详解
2017/03/21 Javascript
nodejs multer实现文件上传与下载
2017/05/10 NodeJs
Vue中v-show添加表达式的问题(判断是否显示)
2018/03/26 Javascript
基于JS实现简单滑块拼图游戏
2019/10/12 Javascript
[48:35]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 TNC vs Optic
2018/04/03 DOTA
[54:02]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 IG vs VGJ.T
2018/04/03 DOTA
用python删除java文件头上版权信息的方法
2014/07/31 Python
python opencv实现任意角度的透视变换实例代码
2018/01/12 Python
Python3+PyInstall+Sciter解决报错缺少dll、html等文件问题
2019/07/15 Python
在Django下创建项目以及设置settings.py教程
2019/12/03 Python
印度网上购物首选目的地:Flipkart
2016/08/01 全球购物
经理管理专业自荐信范文
2013/12/31 职场文书
实习心得体会
2014/01/02 职场文书
家庭教育先进个人事迹材料
2014/01/24 职场文书
优秀老师事迹材料
2014/02/05 职场文书
yy司仪主持词
2014/03/22 职场文书
毕业自我鉴定怎么写
2014/03/25 职场文书
文明生主要事迹
2014/05/25 职场文书
舞蹈兴趣小组活动总结
2014/07/07 职场文书
2015年个人工作总结报告
2015/04/25 职场文书
2015年幼儿园教育教学工作总结
2015/05/25 职场文书
入党积极分子半年考察意见
2015/06/02 职场文书