2014-09-05
上文中http://www.zhishiwu.com/kf/201204/128413.html我给大家讲了递归函数的运行机制及使用,不知道大家是否明白,若不明白可以在下面跟帖提问,我会随时帮助大家解答。
这两天有很多同学在提问问题的时候在分页上面除了问题,那么今天我来给大家详细说下分页技术的应用:
我们经常会在一些web应用中看到漂亮的分页,
点击下一页就会显示后一页的内容,这样是不是页面美观不少呢。
好,看完本文的讲解相信同学们也能写出漂亮的分页来
现在我有一张数据表,表名为mytable,有以下数据:
首先,先来做一个分页链接
<?php
echo "<a href=''>上一页</a><br/>";
echo "<a href=''>下一页</a><br/>";
echo "共计条";
?>
我们思考一下,点击上一页,当前页码减一,并且会显示上一页的数据
假设,当前页码我们用一个变量$page来控制,那么上一页是不是就应该是$page-1
下一页的页码是$page+1
所以我们上面的链接应该改为:
<?php
echo "<a href='index.php?page=".$page-1."'>上一页</a><br/>";
echo "<a href='index.php?page=".$page+1."'>下一页</a><br/>";
?>
这样大家就应该很明白了,怎么去传上一页和下一页的页码
但是在实际的开发中,一个web软件不可能让用户来传页码,用户访问页面只会访问到index.php
所以我们会对这种情况做相关处理:
<?php
$page = !empty($_GET['page'])?$_GET['page']:1
?>
此时我们的$page如果没有给定,即$_GET['page']为空,我们直接给$page赋值为1
下一步,我们来把数据分开显示,也就是说第一页只显示第一页的数据,第二页只显示第二页的数据........第N页只显示第N页的数据
这样的话,我们需要对sql语句进行操作,要想分页显示数据,我们就用到了sql语句的limit子句
好,那我们想,如果每页数据只显示5条记录,sql语句应该什么样子的?
那么我们的
第一页:
显示的第一条到第五条的数据是不是就应该是“limit 0,5”;
第二页:
显示的第六条到第十条的数据就应该是“limit 5,5”;
第三页:
显示的第十一条到第十五条的数据就应该是“limit 10,5”;
..............
我们看一个规律,
仔细观察,我们的第n页是不是就应该是
limit (n-1)*每页显示的条数,每页显示的条数
也就是说,我们需要的数据有当前页码以及每页显示条数
好,刚刚我们说了,当前页码我们可以通过$_GET['page']来获取,那么每页显示条数我们可以用一个变量来定义,熟练的同学可以定义一个常量,把它放到配置文件中去,
这里我们使用变量来定义,设定页大小为5
$page = $_GET['page'];
$pagesize = 5;
那组装的sql语句的limit子句就应该是“ limit ($page-1)*$pagesize,$pagesize”
此时,我们已经能够对数据进行分页处理了,
但是如果想获取总共多少页,我们还需要从数据库中去统计总计多少条记录
$sql = "select count(*) from mytable";
$result = mysql_query($sql);
我们可以把执行的结果使用mysql_result()函数取出。
$count = mysql_result($result,0);
好,那当前我们的记录总数就为$count,
现在我们的总数据条数为9条,每页显示5条,大家想想,我们的总页数是不是应该是2页,也就是ceil(9/5)=2
那总页数计算公式为ceil($count/$pagesize),
好,我们需要的所有数据都已经得到,最终组装成sql语句,并显示出来,应该为:
<?php
//设置每页显示多少条记录
$pagesize = 5;
//获取当前页码
$page = !empty($_GET['page'])?$_GET['page']:1;
//总共记录条数
$sql = "select count(*) from mytable";
$result = mysql_query($sql);
$count = mysql_result($result,0);
//总共有多少页
$page_count = ceil($count/$pagesize);
//判断当前给定页码是否越界
if($page<1){
$page=1;
}elseif($page>$page_count){
$page=$page_count;
}
//开始组装sql语句
$sql = "select id,name,age,sex from mytable limit ".($page-1)*$pagesize.','.$pagesize;
//发送sql语句
$result = mysql_query($sql);
//输出表格
echo "<table border='1'>";
echo "<tr>";
echo "<th>用户名</th><th>年龄</th><th>性别</th>";
echo "</tr>";
//定义性别数组
$sex = array('男','女');
//遍历输出结果集
while($row = mysql_fetch_assoc($result)){
echo "<tr>";
echo "<td>".$row['name']."</td>";
echo "<td>".$row['age']."</td>";
echo "<td>".$sex[$row['sex']]."</td>";
[backcolor=#ffffff][color=#008ef1]echo "</tr>";[/color][/backcolor]
}
echo "</table>";
//加分页显示连接
$up = (($page-1)<1)?1:($page-1);
$down = (($page+1)>$page_count)?$page_count:($page+1);
echo "<a href='test.php?page=".$up."'>上一页</a> ";
echo "<a href='test.php?page=".$down."'>下一页</a> ";
echo "共计".$page_count."页 ";
echo "当前第".$page."页 ";
echo "共计".$count."条记录";
?>
好,这样我们就把分页功能加上了,怎么样,是不是很简单。
我来总结下分页的具体步骤:
第一步:设置页大小(每页显示多少条)
第二步:获取当前页码
第三步:获取总记录条数
第四步:获取总页数
第五步:判断当前给定页码是否越界
第六步:组装sql语句
第七步:发送sql语句给mysql服务器
第八步:遍历结果集输出
第九步:加分页链接
只要记住以上捷哥分页九阳神功的武林秘籍,相信同学们一定能够悠然驰骋PHP的武林杀场
作者 zdrjlamp
1
CI框架连接数据库配置操作以及多数据库操作
09-05
2
asp 简单读取数据表并列出来 ASP如何快速从数据库读取大量数据
05-17
3
C语言关键字及其解释介绍 C语言32个关键字详解
04-05
4
C语言中sizeof是什么意思 c语言里sizeof怎样用法详解
04-26
5
最简单的asp登陆界面代码 asp登陆界面源代码详细介绍
04-12
6
PHP中的魔术方法 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep,
09-05
7
PHP中的(++i)前缀自增 和 (i++)后缀自增
09-05
8
PHP中include和require区别之我见
09-05
常用dos命令及语法
2014-09-27
将视频设置为Android手机开机动画的教程
2014-12-11
php递归返回值的问题
2014-09-05
如何安装PHPstorm并配置方法教程 phpstorm安装后要进行哪些配置
2017-05-03
java中的info是什么意思
2022-03-24
PHP 教程之如何使用BLOB存取图片信息实例
2014-09-05
IcePHP框架中的快速后台中的通用CRUD功能框架
2014-09-05
单片机编程好学吗?单片机初学者怎样看懂代码
2022-03-21
PHP数组函数array
2014-09-05
学ug编程如何快速入门?
2022-03-17
英雄联盟云顶之弈手机版本下载v14.8.5768838 安卓最新版本
策略塔防 78.2M
下载苍蓝前线手游下载v1.1.0 安卓版
策略塔防 464.3M
下载崩坏学园2手游下载v12.2.8 安卓最新版本
角色扮演 323.3M
下载彩虹联萌手游下载v7.3.23015 安卓官方版
卡牌对战 804.7M
下载花花填色苹果版下载v2.2.5 iPhone版
其它手游 174M
下载奥特曼超时空英雄官方正版下载v1.0.2 安卓版
动作闯关 1.63G
下载全民奇迹2ios版下载v15.0.0 iphone版
其它手游 3G
下载罗布乐思roblox国际服最新版官方正版下载v2.682.538 安卓版
动作闯关 131.0M
下载com.roblox.client国际服下载v2.682.538 安卓版
下载
绝地鸭卫游戏下载v0.2.3 安卓版
下载
梦幻模拟战官服下载v6.13.2110 安卓最新版
下载
天龙八部手游8868版下载v1.133.2.2 安卓版
下载
天龙八部游戏下载v1.133.2.2 安卓手机版
下载
天龙八部手游果盘端下载v1.133.2.2 安卓版
下载
海贼王燃烧意志官方版下载v3.3.0.492700 安卓正版
下载
宝宝巴士安慰小宝宝下载v9.87.00.01 安卓版
下载