2024年7月2日发(作者:)
第6卷第5期
广西职业技术学院学报
V01.1O No.5
2013笙10月
a1 of Guan ̄xi Vocational and Technical Colle
October.2013
PHI'中分页显示查询记录的实现方法
罗云芳
(广西职业技术学院,广西南宁530226)
【摘 要]在PHP中实现数据的分页显示有多种方法,实现分页的关键是确定记录数量、每个页面显
示的记录数和页面总数三个数的值,不同的数据库实现显示哪个页面的记录语句不同,Mysql实现的语句
是:SELECT★FROM表名LIMIT起始位置,显示记录数量。
[关键词]PHP;查询;分页
中图分类号:TP311.132.3 文献标识码:A文章编号:1674 ̄3083(2013)05—0014—04
在Web数据库应用程序中,对用户关心的数
1.1获取查询结果集中的记录条数
据进行查询及显示是一项必不可少的工作…。如 在Mysql数据库中,可以在SELECT语句中使
果涉及的记录较多,数据量比较大,将这些记录 用COUNT0函数获取结果集中的记录数量,语句
都放在一张页面显示,一是造成页面过长,用户
实现如SELECT COUNT(1)FROM表名,假设获取的
浏览起来很不方便,二是会使用户等待的时间过
记录数量用变量¥RecordCount保存,则可以通过
长,服务器负载过大。为此,需要利用分页技术 变量¥RecordCount获取记录集的记录数量。
对查询数据进行分页处理,使每一页只显示固定
1.2设置每页显示记录的数量
的记录数,用户则通过超链接定位到需要访问的 假定使用变量¥PageSize来保存每页显示记
页面。
录的数量,它的值由用户根据需要白行设置,可
1 PHP数据分页显示功能实现思路
以直接通过赋值语句来实现。如,设置每页显示
PHP是一种服务器端HTML嵌入式脚本描述语
10条记录,实现语句如¥PageSize=10:
言,可以与Apache服务器紧密结合 ,具有执行
1.3获取总页面数量
效率高,容易与现有的网页整和等特性。同时,
通过求得的记录数量¥RecodeCount和设定的
PHP作为一种动态灵活的Web数据库开发技术,
每页显示的记录数量¥PageSize,可计算得到总页
有着强大的数据库操作能力。分页显示就是指定 面数量,假设总页面数量用变量¥PageCount保存
每页可以显示的记录数量,并通过单击“第~页”
,
实现方法如下:
按钮、“上一页”按钮、“下一页”按钮和“最
if(¥RecordCount)
后一页”按钮等翻页链接打开其他页面。要实现
分页显示,需要解决下面的几个问题。
i f(¥RecordCount<¥PageS i ze)
收稿日期:2013-09—15
作者简介:罗云芳,男,1981年出生,广西贺州人,讲师、软件设计师,研究方向:计算机程序设计、计算机教学。
14
第5期 PHP中分页显示查询记录的实现方法 罗云芳
)
e1se
)
{
¥PageCount
¥PageCount=0
/¥PageSize):
)
计算实现的流程如图1所示:
图l计算总页面数量流程图
函数ceil0功能是向上舍入为最接近的整
viewDataPage.php中,使用下面的语句实现参数
数。这里巧妙运用ceil()函数解决了¥RecordCount 的读取:
能整除和不能整除¥PageSize的情况。
¥Page=¥
GET[’page’]:
1.4如何显示第N页中的记录
i f(¥Page(=O)
虽然使用SPageSize变量可以控制每页显示
¥Page=1:
的记录数,但是每个页面要显示的记录如何获取? 变量¥Page中保存了当前页码。使用变量
不同的数据库获取语句不同,Mysql数据库可以使
¥Page还可以定义翻页链接。如“上一页”链接的
用SELECT语句中的LIMIT子句指定查询记录的范
代码如下:
围,使用方法如:
e c h 0 (“<a h r e f=v i e wD a t aP a g e.
SELECT木FROM表名LIMIT起始位置,显示
php?page=”.(¥Page一1). “上一页</a>”):
记录数量。
下一页的链接代码如下:
如要获取第¥Page页中的记录,可以使用如
e c h 0 (“<a h r e f=v i e wD a t aP a g e.
下语句:
php?page=”.(SPage+1). “下一页</a>”):
SELECT木FROM 表 名LIMIT(¥Page一
在实际的案例应用中,应该根据当前的页码
1)*¥PageSize,¥PageSize
对翻页链接进行控制。如果当前页码已是第一页,
1.5如何通知PHP脚本要显示的页码
则取消如“第一页”和“上一页”的链接;如果
在Web页面中,可以通过传递参数的方式通 当前页码已是最后一页,则取消如“下一页”和“最
知脚本程序显示的页码 。假设分页显示记录的
后一页”的链接。
脚本为viewDataPage.php,传递参数的链接如:
2分页显示功能实现方法举例
h t t P://1 0 C a 1 h 0 S t/v i e wD at aP a g e.
假设数据库中有考生报名表(kh准考证号,
php?page=3
xh学号,xm姓名,school学校名称),记录每
参数page用来指定当前的页码。在 个学校考生的报名情况,.现要求PHP页面根据指
一
l5一
广西职业技术学院学报 2013年10月
定的学校名称查询该学校考生报名具体情况。以
下列出两种实现方法,文件名称为viewDataPage.
php。
2.1方法一:显示上下页效果的实现
在每一页中均显示上一页及下一页的链接,
通过上下页的链接定位到相邻的前后两页,实现
页面跳转功能,如图2所示。
考号 学号 姓名
1001 l 张=
1002 2 发小
1003 3 四科
上一页 下一页
图2按上下页显示效果图
以下是实现的关键代码:
<?php
¥page=S
GET[’page’];
if(¥page==0)
¥page=l:
//每页设定显示3条记录
¥PageSize=3:
获取总记录数,具体一些代码已省略
¥RecordCount=¥row[0]:
//计算总页数
i f(¥RecordCount)
{
if(¥RecordCount<¥PageSize)
{
¥PageCount=l:
)
¥P a g e C 0 U n t =
cei1(¥RecordCount/¥PageSize):
}
e1se
{
¥PageCount=0:
)
此处用HTML表格显示表头,代码略。
¥sql= select kh,xh,xm from考生报
名表1imit .(¥page一1)*¥PageSize. , .
¥PageSize:
1 6一
¥results=¥conn一>query(¥sq1):
whi le(Stow=¥results一>fetch
row 0)
{
此处用表格行显示考生报名信息,代码略。
'
mysqli
close(¥conn):
if(¥page--=1)
echo 上一页 :
e1se
echo <a href=viewDataPage.
php?page= .(¥page一1). >上一页</a> :
i f(¥page==¥PageCount)
echo 下一页 :
else
echo <a href=viewDataPage.
php?page= .(Spage+1). >下一页</a> :
?>
2.2 方法二:每个页面显示10个页码效果
的实现
分析方法一,可发现这种方法页面整齐、美
观,但只能在相邻页之间进行跳转,如果页数较
多,则浏览起来很不方便。此方法在页面中显示
l0个页码、往前整体翻10页和往后整体翻10页
的链接,如图3所示。这种方法既可以使页面统一,
又可实现较大幅度的页面跳转,浏览起来比较方
便。以下是实现的核心代码:
//¥pageNow表示当前页
¥start=floor((¥pageNow一1)/10)木10
+l:
Sindex=¥start:
if(¥pageNow>lO)
e c h 0 &n b S P:&n b S P:<a
hF ef=’vi ewDataPage.PhP?Pag eNow= .
(¥start—I). >&nbsp: ̄nbsp:<<&nbsp:&nbsp:</
a> :
)
for(:¥start<¥index+10:¥start++)
e c h 0 <a h F e f_-’v i ewD at aP a g e.
第5期 PHP中分页显示查询记录的实现方法 罗云芳
php?pageNow=¥start’>[¥start]</a> :
)
e c h 0 &n b S P:&n b S P:<a
分析语句¥start=floor((¥pageNow—
1)/10)木10+1:,可以发现,实现每次向前翻
或向后翻l0个页面的关键是通过语句中的l0确
h r e f=’v i e w D a t a P a g e.
定的。因此,用N表示当前页,Pw表示每次翻动
的页面个数,可以得到如下的翻页通式:
Floor((N一1)/PW)*PW+1
php?pageNow=¥start’>&nbsp:
&nbsp:>>&nbsp:&nbsp:</a> :
通过以上两种具体的实现方法可以看出,实
考号
l001
学号
1
姓名
张=
现分页的关键是确定记录数量、每个页面显示的
记录数和页面总数三个数的值,不同的数据库实
现显示哪个页面的记录语句不同,Mysql实现的语
句是:SELECT木FROM表名LIMIT起始位置,显
示记录数量。在PHP中实现数据的分页显示有多
1002
l003
2
3
发小
四科
《[1]E2][3][4][5]网[7][8][9][10]》
图3显示l0个页码效果图
种方法,但各有其一定的局限性。在实际使用中,
需要根据具体情况来进行合理选择。
参考文献:
[1]李锐.ASP中分页显示查询记录的实现方法
及比较[J].合肥学院学报(自然科学版),2009(8).
[2]苏一丹.一种用PHP实现的动态分页技术
京:人民邮电出版社,2013:176—177.
[4]万福成等.基于URL参数传递的数据库分
页显示技术实现[J].长春工程学院学报(自然科学
版),2012(1).
[J].广西科学院学报,2000(11).
[3]刘乃琦.PHPS ̄IMysql Web应用开发[M].北
On the Implement Methods of Inquiry Record Paging Display in PHP
Luo Yunfang
(Guangxi Vocational and Technical College Nanning,Guangxi 530226)
Abstract:There are some methods to implement the data paging display in PHP。but each
method has its limitations.The key for paging display is to make sure the record quantity,the
record count for each page and the total page number.The record statements for different data
bases to display the page are different.The statement for Mysql is that SELECT*FROM stands for
the initial position of LIMIT to display the record quantity.
KeY words:PHP:inquiry:paging
17—
发布者:admin,转转请注明出处:http://www.yc00.com/news/1719854299a2758901.html
评论列表(0条)