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 相关文章推荐
Windows下PHP的任意文件执行漏洞
Oct 09 PHP
优化使用mysql存储session的php代码
Jan 10 PHP
深入php多态的实现详解
Jun 09 PHP
Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
Jun 14 PHP
PHP弹出提示框并跳转到新页面即重定向到新页面
Jan 24 PHP
PHP中使用Imagick读取pdf并生成png缩略图实例
Jan 21 PHP
Ubuntu中启用php的mail()函数并解决发送邮件速度慢问题
Mar 27 PHP
wampserver改变默认网站目录的办法
Aug 05 PHP
PHP模拟asp中response类实现方法
Aug 08 PHP
mysql desc(DESCRIBE)命令实例讲解
Sep 24 PHP
PHP hebrev()函数用法讲解
Feb 21 PHP
PHP的cookie与session原理及用法详解
Sep 27 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中nowdoc和heredoc使用需要注意的一点
2014/03/21 PHP
让任务管理器中的CPU跳舞的js代码
2008/11/01 Javascript
javascript显示选择目录对话框的代码
2008/11/10 Javascript
让iframe子窗体取父窗体地址栏参数(querystring)
2009/10/13 Javascript
JavaScript 申明函数的三种方法 每个函数就是一个对象(一)
2009/12/04 Javascript
再论Javascript的类继承
2011/03/05 Javascript
JS window对象的top、parent、opener含义介绍
2013/12/03 Javascript
JS实现的一个简单的Autocomplete自动完成例子
2014/04/16 Javascript
js实现获取两个日期之间所有日期的方法
2016/06/17 Javascript
Web打印解决方案之普通报表打印功能
2016/08/29 Javascript
ionic2 tabs 图标自定义实例
2017/03/08 Javascript
JavaScript 获取元素在父节点中的下标(推荐)
2017/06/28 Javascript
NodeJs搭建本地服务器之使用手机访问的实例讲解
2018/05/12 NodeJs
微信小程序实现滑动切换自定义页码的方法分析
2018/12/29 Javascript
Vue 实现分页与输入框关键字筛选功能
2020/01/02 Javascript
element el-tree组件的动态加载、新增、更新节点的实现
2020/02/27 Javascript
python模拟Django框架实例
2016/05/17 Python
使用Python将数组的元素导出到变量中(unpacking)
2016/10/27 Python
浅谈Pandas中map, applymap and apply的区别
2018/04/10 Python
对python append 与浅拷贝的实例讲解
2018/05/04 Python
浅谈python 导入模块和解决文件句柄找不到问题
2018/12/15 Python
python3中的eval和exec的区别与联系
2019/10/10 Python
美国山地自行车、露营、户外装备和服装购物网站:Aventuron
2018/05/05 全球购物
理肤泉俄罗斯官网:La Roche-Posay俄罗斯
2018/07/24 全球购物
StubHub美国:购买或出售您的门票
2019/07/09 全球购物
NFL官方在线商店:NFLShop
2020/07/29 全球购物
研究生毕业鉴定
2014/01/29 职场文书
《会变的花树叶》教学反思
2014/02/10 职场文书
活动总结书
2014/05/08 职场文书
保护环境倡议书300字
2014/05/19 职场文书
乡镇民主生活会发言材料
2014/10/20 职场文书
幸福家庭事迹材料
2014/12/20 职场文书
小班下学期个人总结
2015/02/12 职场文书
初中班主任心得体会
2016/01/07 职场文书
解决golang在import自己的包报错的问题
2021/04/29 Golang