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获得用户使用的代理服务器ip即真实ip
Dec 31 PHP
Apache服务器无法使用的解决方法
May 08 PHP
phpExcel中文帮助手册之常用功能指南
Aug 18 PHP
PHP利用header跳转失效的解决方法
Oct 24 PHP
深入讲解PHP Session及如何保持其不过期的方法
Aug 18 PHP
PHP直接修改表内容DataGrid功能实现代码
Sep 24 PHP
微信公众号OAuth2.0网页授权问题浅析
Jan 21 PHP
php+Memcached实现简单留言板功能示例
Feb 15 PHP
Yii2中添加全局函数的方法分析
May 04 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
Sep 07 PHP
PHP filesize函数用法浅析
Feb 15 PHP
ThinkPHP5.1的权限控制怎么写?分享一个AUTH权限控制
Mar 09 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生成月历代码
2007/06/14 PHP
PHP CKEditor 上传图片实现代码
2009/11/06 PHP
Yii2框架使用计划任务的方法
2016/05/25 PHP
Javascript SHA-1:Secure Hash Algorithm
2006/12/20 Javascript
JQuery打造PHP的AJAX表单提交实例
2009/11/03 Javascript
jQuery操作select的实例代码
2012/06/14 Javascript
关于extjs4如何获取grid修改后的数据的问题
2013/08/07 Javascript
DOM节点的替换或修改函数replaceChild()用法实例
2015/01/12 Javascript
Javascript中的apply()方法浅析
2015/03/15 Javascript
Bootstrap每天必学之标签与徽章
2015/11/27 Javascript
jQuery Validate表单验证插件 添加class属性形式的校验
2016/01/18 Javascript
js处理层级数据结构的方法小结
2017/01/17 Javascript
bootstrap table实现双击可编辑、添加、删除行功能
2017/09/27 Javascript
vue-router+vuex addRoutes实现路由动态加载及菜单动态加载
2017/09/28 Javascript
JS 中可以提升幸福度的小技巧(可以识别更多另类写法)
2018/07/28 Javascript
详解关于html,css,js三者的加载顺序问题
2019/04/10 Javascript
vue中img src 动态加载本地json的图片路径写法
2019/04/25 Javascript
JavaScript从原型到原型链深入理解
2019/06/03 Javascript
layui使用templet格式化表格数据的方法
2019/09/16 Javascript
JavaScript语句错误throw、try及catch实例解析
2020/08/18 Javascript
python在Windows8下获取本机ip地址的方法
2015/03/14 Python
基于Python代码编辑器的选用(详解)
2017/09/13 Python
Django 实现admin后台显示图片缩略图的例子
2019/07/28 Python
python实现图片压缩代码实例
2019/08/12 Python
Windows下python3安装tkinter的问题及解决方法
2020/01/06 Python
详细分析Python可变对象和不可变对象
2020/07/09 Python
Python自动发送和收取邮件的方法
2020/08/12 Python
Python之多进程与多线程的使用
2021/02/23 Python
html5的新玩法——语音搜索
2013/01/03 HTML / CSS
Hotels.com爱尔兰:全球酒店预订
2017/02/24 全球购物
YBF Beauty官网:美丽挚友,美国知名彩妆品牌
2020/11/22 全球购物
广告业务员岗位职责
2014/02/06 职场文书
名企HR怎样看待求职信
2014/02/23 职场文书
2014年乡镇团委工作总结
2014/12/18 职场文书
给领导敬酒词
2015/08/12 职场文书
导游词之吉林花园山
2019/10/17 职场文书