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下PHP5和Apache的安装与配置
Sep 05 PHP
使用 eAccelerator加速PHP代码的目的
Mar 16 PHP
CodeIgniter使用phpcms模板引擎
Nov 12 PHP
Windows和Linux中php代码调试工具Xdebug的安装与配置详解
May 08 PHP
PHP的error_reporting错误级别变量对照表
Jul 08 PHP
ThinkPHP惯例配置文件详解
Jul 14 PHP
php实现的太平洋时间和北京时间互转的自定义函数分享
Aug 19 PHP
ThinkPHP模板输出display用法分析
Nov 26 PHP
php提交过来的数据生成为txt文件
Apr 28 PHP
PHP框架性能测试报告
May 08 PHP
PHP排序算法之直接插入排序(Straight Insertion Sort)实例分析
Apr 20 PHP
PHP单例模式实例分析【防继承,防克隆操作】
May 22 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
上海牌131型七灯四波段四喇叭一级收音机
2021/03/02 无线电
Win9x/ME下Apache+PHP安装配置
2006/10/09 PHP
目录,文件操作详谈―PHP
2006/11/25 PHP
PHP提示Notice: Undefined variable的解决办法
2012/11/24 PHP
PHP实现仿Google分页效果的分页函数
2015/07/29 PHP
window.name代替cookie的实现代码
2010/11/28 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(四)用地图块拼成大地图
2013/01/23 Javascript
基于javascript的JSON格式页面展示美化方法
2014/07/02 Javascript
JavaScript中的console.trace()函数介绍
2014/12/29 Javascript
JavaScript实现数字数组按照倒序排列的方法
2015/04/06 Javascript
jquery实现平滑的二级下拉菜单效果
2015/08/26 Javascript
微信企业号开发之微信考勤Cookies的使用
2015/09/11 Javascript
js操作table元素实现表格行列新增、删除技巧总结
2015/11/18 Javascript
SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的
2015/12/10 Javascript
jquery实现可旋转可拖拽的文字效果代码
2016/01/27 Javascript
详解JavaScript表单验证(E-mail 验证)
2016/03/31 Javascript
Bootstrap Navbar Component实现响应式导航
2016/10/08 Javascript
基于VUE.JS的移动端框架Mint UI的使用
2017/10/11 Javascript
解决vue组件中使用v-for出现告警问题及v for指令介绍
2017/11/11 Javascript
vue 文件目录结构详解
2017/11/24 Javascript
深入浅出理解JavaScript高级定时器原理与用法
2018/08/02 Javascript
vue动画之点击按钮往上渐渐显示出来的实例
2018/09/29 Javascript
微信小程序 SOTER 生物认证DEMO 指纹识别功能
2019/12/13 Javascript
Vue自定义全局弹窗组件操作
2020/08/11 Javascript
vue 项目中当访问路由不存在的时候默认访问404页面操作
2020/08/31 Javascript
在Python程序中操作文件之flush()方法的使用教程
2015/05/24 Python
一键搞定python连接mysql驱动有关问题(windows版本)
2016/04/23 Python
numpy 对矩阵中Nan的处理:采用平均值的方法
2018/10/30 Python
pygame实现俄罗斯方块游戏(AI篇1)
2019/10/29 Python
Pycharm如何导入python文件及解决报错问题
2020/05/10 Python
Python列表的深复制和浅复制示例详解
2021/02/12 Python
html5 浏览器支持 如何让所有的浏览器都支持HTML5标签样式
2012/12/07 HTML / CSS
Web前端页面跳转并取到值
2017/04/24 HTML / CSS
英国第一的市场和亚马逊替代品:OnBuy
2019/03/16 全球购物
最新个人职业生涯规划书
2014/01/22 职场文书
2014年房产经纪人工作总结
2014/12/08 职场文书