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安全编程之加密功能
Oct 09 PHP
PHP二维数组的去重问题解析
Jul 17 PHP
PHP生成自定义长度随机字符串的函数分享
May 04 PHP
PHP中数据库单例模式的实现代码分享
Aug 21 PHP
PHP生成条形图的方法
Dec 10 PHP
PHP stream_context_create()函数的使用示例
May 12 PHP
Symfony2开发之控制器用法实例分析
Feb 05 PHP
PHP常用设计模式之委托设计模式
Feb 13 PHP
PHP模板引擎Smarty内建函数section,sectionelse用法详解
Apr 11 PHP
php使用ftp实现文件上传与下载功能
Jul 21 PHP
PHP实现微信提现(企业付款到零钱)
Aug 01 PHP
php常用的工具开发整理
Sep 26 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操作数组相关函数
2011/02/03 PHP
解析关于wamp启动是80端口被占用的问题
2013/06/21 PHP
PHP屏蔽过滤指定关键字的方法
2014/11/03 PHP
thinkPHP下ueditor的使用方法详解
2015/12/26 PHP
php获取POST数据的三种方法实例详解
2016/12/20 PHP
PHP设计模式之外观模式(Facade)入门与应用详解
2019/12/13 PHP
基于jquery的checkbox下拉框插件代码
2010/06/25 Javascript
JavaScript将页面表格导出为Excel的具体实现
2013/12/27 Javascript
jQuery封装的屏幕居中提示信息代码
2016/06/08 Javascript
url中的特殊符号有什么含义(推荐)
2016/06/17 Javascript
将json转换成struts参数的方法
2016/11/08 Javascript
js实现页面刷新滚动条位置不变
2016/11/27 Javascript
js中开关变量使用实例
2017/02/24 Javascript
Angular2入门--架构总览
2017/03/29 Javascript
关于在mongoose中填充外键的方法详解
2017/08/14 Javascript
javascript 日期相减-在线教程(附代码)
2017/08/17 Javascript
实用的Vue开发技巧
2019/05/30 Javascript
node.js express捕获全局异常的三种方法实例分析
2019/12/27 Javascript
跟老齐学Python之模块的加载
2014/10/24 Python
利用Python和OpenCV库将URL转换为OpenCV格式的方法
2015/03/27 Python
举例详解Python中的split()函数的使用方法
2015/04/07 Python
Python自动化部署工具Fabric的简单上手指南
2016/04/19 Python
Python实现抓取网页生成Excel文件的方法示例
2017/08/05 Python
Python 读取串口数据,动态绘图的示例
2019/07/02 Python
python怎么对数字进行过滤
2020/07/05 Python
HTML5验证以及日期显示的实现详解
2013/07/05 HTML / CSS
Net-A-Porter美国官网:全球时尚奢侈品名站
2017/02/11 全球购物
Merchant 1948澳大利亚:新西兰领先的鞋类和靴子供应商
2018/03/24 全球购物
《蜗牛的奖杯》教后反思
2014/04/24 职场文书
2014教师评职称工作总结
2014/11/10 职场文书
2014年档案管理工作总结
2014/11/17 职场文书
离开雷锋的日子观后感
2015/06/09 职场文书
公司备用金管理制度
2015/08/04 职场文书
三严三实学习心得体会(精选N篇)
2016/01/05 职场文书
Vue vee-validate插件的简单使用
2021/06/22 Vue.js
Linux安装Docker详细教程
2022/07/07 Servers