PHP封装分页函数实现文本分页和数字分页


Posted in PHP onOctober 23, 2014

最近,在项目中要用到分页。分页功能是经常使用的一个功能,所以,对其以函数形式进行了封装。

// 分页分装
/**
*  $pageType  分页类型 1是数字分页 2是文本分页
* 可以将$pageTotal,$page,$total等数据作为参数传递,或者在paging作为全局变量(推荐)
*/
function paging($pageType)
{
  global $pageTotal,$page,$total;
  if($pageType == 1)
  {
    echo '<div id="pagenum">';
      echo'<ul>';
        for($i=0; $i < $pageTotal; $i++)
        { 
          if($page == ($i+1))
          {
            echo '<li><a href="blogfriends.php?page='.($i+1).'">'.($i+1).'</a></li>';
          }
          else
          {
            echo '<li><a href="blogfriends.php?page='.($i+1).'">'.($i+1).'</a></li>';
          }
        }
      echo'</ul>';
    echo'</div>';  }
  else if($pageType == 2)
  {
    echo '<div id="pagetext">';
      echo '<ul>';
        echo '<li>'.$page.'/'.$pageTotal.'页 | </li>';
        echo '<li>共有<strong>'.$total .'</strong>个会员 | </li>';
          // 第一页
          if($page == 1)
          {
            echo '<li>首页 | </li>';
            echo '<li>上一页 | </li>';
          }
          else
          {
            // $_SERVER["SCRIPT_NAME"]获取当前的脚本名字,方便移植
            // 也可以自定义常量,常量值和脚本文件名一致
            echo '<li><a href="'.$_SERVER["SCRIPT_NAME"].'">首页 </a>| </li>';
            echo '<li><a href="'.$_SERVER["SCRIPT_NAME"].'?page='.($page - 1).'">上一页 </a>| </li>';
          }
          // 最后一页
          if($page == $pageTotal)
          {
            echo '<li>下一页 | </li>';
            echo '<li>尾页 | </li>';
          }
          else
          {
            echo '<li><a href="'.$_SERVER["SCRIPT_NAME"].'?page='.($page + 1).'">下一页 </a>| </li>';
            echo '<li><a href="'.$_SERVER["SCRIPT_NAME"].'?page='.($pageTotal).'">尾页 </a>| </li>';
          }    
      echo '</ul>';
    echo '</div>';
  }
}

参数解释:

$pageTotal是总页数,$page是当前页,$total是从数据库中获取的数据总数;

为了简化,将参数全部封装

// 分页参数分装
/**
*  $sql  可以 获取数据总数的一个sql语句
* $size 每一页显示条数
*/
function pageParam($sql,$size)
{
  // 将所有涉及的参数设置全局变量
  // $pagestart 某一页从哪里开始
  // $total 总记录数  $page 某一页 $pageTotal 总页数
  global $pagestart,$pagesize,$total,$page,$pageTotal;
  $pagesize = $size;
  // 获取数据总数
  $total = mysql_num_rows(queryDB($sql));  // 错误处理,先判断是否存在
  if(isset($_GET['page']))
  {
    // 具体某一页
    $page = $_GET['page'];
    // 判断是否为空(0是空)/小于0/是否是数字
    if(empty($page) || $page < 0 || !is_numeric($page))
    {
      $page = 1;
    }
    else
    {
      $page = intval($page); //取整,防止小数出现
    }
  }
  else
  {
    // 初始化显示第1页
    $page = 1;
  }
  // 数据库清零
  if($total == 0)
  {
    // 设置为1
    $pageTotal = 1;
  }
  else
  {
    // 分页的总页数(进一取整处理)
    $pageTotal = ceil($total / $pagesize);
  }
  // 页数大于总页码$total
  if($page > $pageTotal)
  {
    $page = $pageTotal;
  }
  // 当页从某一条记录开始
  $pagestart = ($page - 1) * $pagesize;
}

参数解释:

$pagestart是当页从某一条记录开始,$pagesize是每页显示的记录数

在使用中,先调用pageParam,再调用paging

/**
* 第一个 可以 获取数据总数的一个sql语句
* 第二个 每一页显示条数
*/
pageParam("select userid from user",2);
<?php 
  // 分页类型 1是数字分页 2是文本分页
   paging(2);
?>

调用的位置根据具体情况选择,文本分页如下:

PHP封装分页函数实现文本分页和数字分页PHP封装分页函数实现文本分页和数字分页

<?php 
    // 分页类型 1是数字分页 2是文本分页
    paging(1);
 ?>

数字分页如下:

PHP封装分页函数实现文本分页和数字分页PHP封装分页函数实现文本分页和数字分页

样式自行调整。

PHP 相关文章推荐
解析php中的fopen()函数用打开文件模式说明
Jun 20 PHP
destoon找回管理员密码的方法
Jun 21 PHP
PHP生成网站桌面快捷方式代码分享
Oct 11 PHP
PHP输出一个等腰三角形的方法
May 12 PHP
Yii扩展组件编写方法实例分析
Jun 29 PHP
php+mysql实现简单的增删改查功能
Jul 13 PHP
php类自动加载器实现方法
Jul 28 PHP
功能强大的php文件上传类
Aug 29 PHP
centos 7.2下搭建LNMP环境教程
Nov 20 PHP
php生成条形码的图片的实例详解
Sep 13 PHP
PHP框架实现WebSocket在线聊天通讯系统
Nov 21 PHP
Laravel5.1 框架数据库操作DB运行原生SQL的方法分析
Jan 07 PHP
20个2014年最优秀的PHP框架回顾
Oct 22 #PHP
PHP获取当前页面URL函数实例
Oct 22 #PHP
PHP连接MSSQL2008/2005数据库(SQLSRV)配置实例
Oct 22 #PHP
百度实时推送api接口应用示例
Oct 21 #PHP
php之curl实现http与https请求的方法
Oct 21 #PHP
教你如何开启shopnc b2b2c 伪静态
Oct 21 #PHP
PHP大转盘中奖概率算法实例
Oct 21 #PHP
You might like
PHP常用代码
2006/11/23 PHP
php引用返回与取消引用的详解
2013/06/08 PHP
php mysql实现mysql_select_db选择数据库
2016/12/30 PHP
PHPExcel 修改已存在Excel的方法
2018/05/03 PHP
javascript表单验证 - Parsley.js使用和配置
2013/01/25 Javascript
node.js中的fs.exists方法使用说明
2014/12/17 Javascript
javascript实现模拟时钟的方法
2015/05/13 Javascript
nodejs实现获取当前url地址及url各种参数值
2015/06/25 NodeJs
老生常谈js动态添加事件--- 事件委托
2016/07/19 Javascript
EditPlus 正则表达式 实战(3)
2016/12/15 Javascript
微信小程序实现跟随菜单效果和循环嵌套加载数据
2017/11/21 Javascript
JavaScript使用indexOf()实现数组去重的方法分析
2018/09/04 Javascript
vue-awesome-swiper 基于vue实现h5滑动翻页效果【推荐】
2018/11/08 Javascript
js的各种数据类型判断的介绍
2019/01/19 Javascript
Vue批量图片显示时遇到的路径被解析问题
2019/03/28 Javascript
使用vue3重构拼图游戏的实现示例
2021/01/25 Vue.js
[03:52]显微镜下的DOTA2第三期——英雄在无聊的时候干什么
2014/06/20 DOTA
Python检测生僻字的实现方法
2016/10/23 Python
python登录并爬取淘宝信息代码示例
2017/12/09 Python
python 实现提取某个索引中某个时间段的数据方法
2019/02/01 Python
Python向excel中写入数据的方法
2019/05/05 Python
基于python分析你的上网行为 看看你平时上网都在干嘛
2019/08/13 Python
Python单元测试工具doctest和unittest使用解析
2019/09/02 Python
python GUI库图形界面开发之PyQt5动态加载QSS样式文件
2020/02/25 Python
如何用python开发Zeroc Ice应用
2021/01/29 Python
python 批量将中文名转换为拼音
2021/02/07 Python
JD Sports丹麦:英国领先的运动时尚零售商
2020/11/24 全球购物
经典优秀个人求职信分享
2013/12/12 职场文书
市场安全管理制度
2014/01/26 职场文书
毕业生如何写自我鉴定
2014/03/15 职场文书
原料仓仓管员岗位职责
2014/07/08 职场文书
四风问题原因分析及整改措施
2014/10/24 职场文书
旷工检讨书1000字
2015/01/01 职场文书
计算机专业自荐信
2015/03/05 职场文书
校园安全学习心得体会
2016/01/18 职场文书
60条职场经典语录,总有一条能触动你的心
2019/08/21 职场文书