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).'" class="selected">'.($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 
// 分页类型 1是数字分页 2是文本分页
paging(1);
?>

数字分页如下:

PHP函数实现分页含文本分页和数字分页

样式自行调整。

PHP 相关文章推荐
实现“上一页”和“下一页按钮
Oct 09 PHP
php 中的str_replace 函数总结
Apr 27 PHP
Ajax+PHP 边学边练 之二 实例
Nov 24 PHP
php object转数组示例
Jan 15 PHP
ThinkPHP中的常用查询语言汇总
Aug 22 PHP
用php代码限制国内IP访问我们网站
Sep 26 PHP
调用WordPress函数统计文章访问量及PHP原生计数器的实现
Mar 21 PHP
php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)
May 09 PHP
PHP中使用foreach()遍历二维数组的简单实例
Jun 13 PHP
详解php伪造Referer请求反盗链资源
Jan 24 PHP
Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
May 08 PHP
php遍历目录下文件并按修改时间排序操作示例
Jul 12 PHP
10个实用的PHP正则表达式汇总
Oct 23 #PHP
PHP中怎样防止SQL注入分析
Oct 23 #PHP
PDO防注入原理分析以及使用PDO的注意事项总结
Oct 23 #PHP
常用PHP框架功能对照表
Oct 23 #PHP
C/S和B/S两种架构区别与优缺点分析
Oct 23 #PHP
php中字符串和正则表达式详解
Oct 23 #PHP
PHP制作3D扇形统计图以及对图片进行缩放操作实例
Oct 23 #PHP
You might like
为什么那些咖啡爱好者大多看不上连锁咖啡店?
2021/03/06 咖啡文化
深入PHP FTP类的详解
2013/06/13 PHP
php上传图片到指定位置路径保存到数据库的具体实现
2013/12/30 PHP
phpExcel中文帮助手册之常用功能指南
2014/08/18 PHP
zend framework中使用memcache的方法
2016/03/04 PHP
yii插入数据库防并发的简单代码
2017/05/27 PHP
laravel ORM关联关系中的 with和whereHas用法
2019/10/16 PHP
jQuery调用RESTful WCF示例代码(GET方法/POST方法)
2014/01/26 Javascript
JS中使用Array函数shift和pop创建可忽略参数的例子
2014/05/28 Javascript
javascript实现的平方米、亩、公顷单位换算小程序
2014/08/11 Javascript
js简单抽奖代码
2015/01/16 Javascript
js实现点击左右按钮轮播图片效果实例
2015/01/29 Javascript
基于JavaScript实现回到页面顶部动画代码
2016/05/24 Javascript
基于Bootstrap的UI扩展 StyleBootstrap
2016/06/17 Javascript
AngularJS基础 ng-srcset 指令简单示例
2016/08/03 Javascript
前端框架Vue.js中Directive知识详解
2016/09/12 Javascript
Angular获取手机验证码实现移动端登录注册功能
2017/05/17 Javascript
jquery实现用户登陆界面(示例讲解)
2017/09/06 jQuery
vue-cli中的webpack配置详解
2017/09/25 Javascript
Angular js 实现添加用户、修改密码、敏感字、下拉菜单的综合操作方法
2017/10/24 Javascript
JavaScript模块管理的简单实现方式详解
2019/06/15 Javascript
JavaScript对象访问器Getter及Setter原理解析
2020/12/08 Javascript
[04:22]DSPL第二期精彩集锦:残血反杀!
2014/12/10 DOTA
python smtplib模块发送SSL/TLS安全邮件实例
2015/04/08 Python
深入理解Python中装饰器的用法
2016/06/28 Python
python selenium 弹出框处理的实现
2019/02/26 Python
python 实现图片批量压缩的示例
2020/12/18 Python
详解Pymongo常用查询方法总结
2021/01/29 Python
HTML5 window/iframe跨域传递消息 API介绍
2013/08/26 HTML / CSS
HTML5 input placeholder 颜色修改示例
2014/05/30 HTML / CSS
HTML5跳转小程序wx-open-launch-weapp的示例代码
2020/07/16 HTML / CSS
网络艺术零售业的先驱者:artrepublic
2017/09/26 全球购物
eDreams葡萄牙:全球最大的在线旅行社之一
2019/04/15 全球购物
县优秀教师事迹材料
2014/01/31 职场文书
大学生团支书竞选稿
2015/11/21 职场文书
《总之就是很可爱》新作短篇动画《总之就是很可爱~制服~》将于2022年夏天播出
2022/04/07 日漫