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&amp;&amp;mysql)五
Oct 09 PHP
php 清除网页病毒的方法
Dec 05 PHP
php 字符过滤类,用于过滤各类用户输入的数据
May 27 PHP
php 多个submit提交表单 处理方法
Jul 07 PHP
浅析php面向对象public private protected 访问修饰符
Jun 30 PHP
php设计模式之单例、多例设计模式的应用分析
Jun 30 PHP
php对二维数组按指定键值key排序示例代码
Nov 26 PHP
ThinkPHP内置jsonRPC的缺陷分析
Dec 18 PHP
在Mac OS的PHP环境下安装配置MemCache的全过程解析
Feb 15 PHP
php实现计算百度地图坐标之间距离的方法
May 05 PHP
php array_values 返回数组的所有值详解及实例
Nov 12 PHP
php png失真的原因及解决办法
Nov 17 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生成扭曲及旋转的验证码图片
2013/06/07 PHP
destoon调用自定义模板及样式的公告栏
2014/06/21 PHP
php 类自动载入的方法
2015/06/03 PHP
php基于Fleaphp框架实现cvs数据导入MySQL的方法
2016/02/23 PHP
PHP XML Expat解析器知识点总结
2019/02/15 PHP
javascript写的一个链表实现代码
2009/10/25 Javascript
firefox下frameset取不到值的解决方法
2010/09/06 Javascript
node.js chat程序如何实现Ajax long-polling长链接刷新模式
2012/03/13 Javascript
JavaScript 事件对象介绍
2015/04/13 Javascript
创建你的第一个AngularJS应用的方法
2015/06/16 Javascript
avalon js实现仿google plus图片多张拖动排序附源码下载
2015/09/24 Javascript
jquery根据td给相同tr下其他td赋值的实现方法
2016/10/05 Javascript
jQuery 全选 全不选 事件绑定的实现代码
2017/01/23 Javascript
使用命令行工具npm新创建一个vue项目的方法
2017/12/27 Javascript
跨域解决之JSONP和CORS的详细介绍
2018/11/21 Javascript
js实现从右往左匀速显示图片(无缝轮播)
2020/06/29 Javascript
[06:24]DOTA2亚洲邀请赛小组赛第三日 TOP10精彩集锦
2015/02/01 DOTA
[04:10]2016国际邀请赛中国区预选赛第二日TOP10精彩集锦
2016/06/28 DOTA
简单的通用表达式求10乘阶示例
2014/03/03 Python
Python实现输出某区间范围内全部素数的方法
2018/05/02 Python
解决Pycharm运行时找不到文件的问题
2018/10/29 Python
Python面向对象程序设计中类的定义、实例化、封装及私有变量/方法详解
2019/02/28 Python
Pycharm保存不能自动同步到远程服务器的解决方法
2019/06/27 Python
Python-for循环的内部机制
2020/06/12 Python
python 实现aes256加密
2020/11/27 Python
Stefania Mode英国:奢华设计师和时尚服装
2017/10/23 全球购物
为娇小女性量身打造:Petite Studio
2018/11/01 全球购物
英国最大的笔记本电脑直销专家:Laptops Direct
2019/07/20 全球购物
合作意向协议书范本
2014/03/31 职场文书
《她是我的朋友》教学反思
2014/04/26 职场文书
群众路线剖析材料怎么写
2014/10/09 职场文书
2015年生活老师工作总结
2015/05/27 职场文书
《梅花魂》教学反思
2016/02/18 职场文书
vue3中provide && inject的使用
2021/07/01 Vue.js
python自动化八大定位元素讲解
2021/07/09 Python
pycharm安装深度学习pytorch的d2l包失败问题解决
2022/03/25 Python