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 相关文章推荐
基于pear auth实现登录验证
Feb 26 PHP
PHP常用代码大全(新手入门必备)
Jun 29 PHP
php输出xml格式字符串(用的这个)
Jul 12 PHP
php读取mysql的简单实例
Jan 15 PHP
PHP正则提取不包含指定网址的图片地址的例子
Apr 21 PHP
合格的PHP程序员必备技能
Nov 13 PHP
在WordPress中使用PHP脚本来判断访客来自什么国家
Dec 10 PHP
给大家分享几个常用的PHP函数
Jan 15 PHP
php+redis实现注册、删除、编辑、分页、登录、关注等功能示例
Feb 15 PHP
Yii实现复选框批量操作实例代码
Mar 15 PHP
php中时间函数date及常用的时间计算
May 12 PHP
php删除二维数组中的重复值方法
Mar 12 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
一个简洁的多级别论坛
2006/10/09 PHP
Ajax+PHP快速上手及简单应用说明
2013/07/24 PHP
通过chrome浏览器控制台(Console)进行PHP Debug的方法
2016/10/19 PHP
JavaScript经典效果集锦
2010/07/06 Javascript
jQuery文本框(input textare)事件绑定方法教程
2013/04/24 Javascript
jQuery之选项卡的简单实现
2014/02/28 Javascript
NodeJS创建基础应用并应用模板引擎
2016/04/12 NodeJs
jquery判断input值不为空的方法
2016/06/05 Javascript
Javascript中的 “&amp;” 和 “|” 详解
2017/02/02 Javascript
理解javascript中的Function.prototype.bind的方法
2017/02/03 Javascript
深入浅析Vue不同场景下组件间的数据交流
2017/08/15 Javascript
jquery动态添加以及遍历option并获取特定样式名称的option方法
2018/01/29 jQuery
150行代码带你实现微信小程序中的数据侦听
2019/05/17 Javascript
layui.use模块外部使用其内部定义的js封装函数方法
2019/09/16 Javascript
javascript设计模式 ? 享元模式原理与用法实例分析
2020/04/15 Javascript
OpenLayers实现图层切换控件
2020/09/25 Javascript
[04:46]2018年度玩家喜爱的电竞媒体-完美盛典
2018/12/16 DOTA
Python中使用PIPE操作Linux管道
2015/02/04 Python
Python实现修改文件内容的方法分析
2018/03/25 Python
python进程和线程用法知识点总结
2019/05/28 Python
python基于递归解决背包问题详解
2019/07/03 Python
python异步编程 使用yield from过程解析
2019/09/25 Python
如何使用python3获取当前路径及os.path.dirname的使用
2019/12/13 Python
Python操作MySQL数据库的示例代码
2020/07/13 Python
Python通过format函数格式化显示值
2020/10/17 Python
python源文件的字符编码知识点详解
2021/03/04 Python
Python 求向量的余弦值操作
2021/03/04 Python
Android面试题及答案
2015/09/04 面试题
大学老师推荐信
2014/02/25 职场文书
校车安全责任书
2014/08/25 职场文书
杭州西湖英语导游词
2015/02/03 职场文书
2015年清明节网上祭英烈活动总结
2015/03/26 职场文书
Python3.8官网文档之类的基础语法阅读
2021/09/04 Python
CentOS8.4安装Redis6.2.6的详细过程
2021/11/20 Redis
如何通过cmd 连接阿里云服务器
2022/04/18 Servers
Python查找算法的实现 (线性、二分,分块、插值查找算法)
2022/04/24 Python