全讲解PHP MySQL的分页显示示例分析

文章作者 100test 发表时间 2007:06:08 11:40:05
来源 100Test.Com百考试题网


  Web开发是今后分布式程式开发的主流,通常的web开发都要涉及到与数据库打交道,客户端从服务器端读取通常都是以分页的形式来显示,一页一页的阅读起来既方便又美观。所以说写分页程序是web开发的一个重要组成部分,在这里,我们共同来研究分页程序的编写。

一、分页程序的原理

  分页程序有两个非常重要的参数:每页显示几条记录($pagesize)和当前是第几页($page)。有了这两个参数就可以很方便的写出分页程序,我们以MySql数据库作为数据源,在MySQL里如果要想取出表内某段特定内容可以使用的T-SQL语句:0select * from table limit offset,rows来实现。这里的offset是记录偏移量,它的计算方法是offset=$pagesize*($page-1),rows是要显示的记录条数,这里就是$page。也就是说0select * from table limit 10,10这条语句的意思是取出表里从第11条记录开始的20条记录。

二、主要代码解析

$pagesize=10. //设置每一页显示的记录数

$conn=mysql_connect("localhost","root",""). //连接数据库

$rs=mysql_query("0select count(*) from tb_product",$conn). //取得记录总数$rs

$myrow = mysql_fetch_array($rs).

$numrows=$myrow[0].



//计算总页数



$pages=intval($numrows/$pagesize).



//判断页数设置



if (isset($_GET[page])){

 $page=intval($_GET[page]).

}

else{ 

 $page=1. //否则,设置为第一页

}

三、创建用例用表myTable

create table myTable

(id int NOT NULL auto_increment,news_title varchar(50),

news_cont text,add_time datetime,PRIMARY KEY(id))
四、完整代码

<html>

<head>

<title>php分页示例</title>

<meta http-equiv="Content-Type" content="text/html. charset=gb2312"> 

</head>



<body>

<?php

 $conn=mysql_connect("localhost","root","").

 //设定每一页显示的记录数

 $pagesize=1.

 mysql_0select_db("mydata",$conn).

 //取得记录总数$rs,计算总页数用

 $rs=mysql_query("0select count(*) from tb_product",$conn).

 $myrow = mysql_fetch_array($rs).

 $numrows=$myrow[0].

 //计算总页数



 $pages=intval($numrows/$pagesize).

 if ($numrows%$pagesize)

$pages  .

 //设置页数

 if (isset($_GET[page])){

$page=intval($_GET[page]).

 }

 else{

//设置为第一页 

$page=1.

 }

 //计算记录偏移量

 $offset=$pagesize*($page - 1).

 //读取指定记录数

 $rs=mysql_query("0select * from myTable

 order by id desc limit $offset,$pagesize",$conn).

 if ($myrow = mysql_fetch_array($rs))

 {

$i=0.

?>

<table border="0" width="80%">

<tr>

 <td width="50%" bgcolor="#E0E0E0">

<p align="center">标题</td>

<td width="50%" bgcolor="#E0E0E0">

<p align="center">发布时间</td>

</tr>

<?php

 do {

$i  .

?>

<tr>

 <td width="50%"><?=$myrow["news_title"]?></td>

 <td width="50%"><?=$myrow["news_cont"]?></td>

</tr>

 <?php

 }

 while ($myrow = mysql_fetch_array($rs)).

echo "</table>".

}

echo "<div align=center>共有".$pages."页(".$page."/".$pages.")".

for ($i=1.$i< $page.$i  )

 echo "<a href=fenye.php?page=".$i.">[".$i ."]</a> ".

 echo "[".$page."]".

 for ($i=$page 1.$i<=$pages.$i  )

echo "<a href=fenye.php?page=".$i.">[".$i ."]</a> ".

echo "</div>".

 ?>

</body>

</html>
五、总结

本例代码在windows2000 server php4.4.0 mysql5.0.16上运行正常。该示例显示的分页格式是[1][2][3]…这样形式。假如想显示成“首页 上一页 下一页 尾页”这样形式,请加入以下代码:

$first=1.

$prev=$page-1.

$next=$page 1.

$last=$pages.



if ($page > 1)

{

 echo "<a href=fenye.php?page=".$first.">首页</a> ".

 echo "<a href=fenye.php?page=".$prev.">上一页</a> ".

}



if ($page < $pages)

{

 echo "<a href=fenye.php?page=".$next.">下一页</a> 

 echo "<a href=fenye.php?page=".$last.">尾页</a> ".

}

其实,写分页显示代码是很简单的,只要掌握了它的工作原理。


src="/linux/js/wxgg_linux.js">

相关文章


Linux安全攻略如何才能让内存不再泄漏
新手看招Linux操作系统的几种引导方法
linux常用的command技巧
TurboLinux操作系统的配置命令详细解析
全讲解PHP MySQL的分页显示示例分析
rhel5硬盘安装常见问题
如何补上Linux缺乏应用软件的不便之处
如何在linux下面运行招商银行专业版
Ubuntu系统关于驱动模块命令的一些使用
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛