当前位置:首页 > 完全讲解PHP+MySQL的分页显示示例分析

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

点击次数:1248  更新日期:2011-01-03
\n

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


\n

一、分页程序的原理
\n


\n

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


\n

二、主要代码解析
\n

\n

\n


\n
pagesize=10; //设置每一页显示的记录数
\nconn=mysql_connect(“localhost”,”root”,”"); //连接数据库
\nrs=mysql_query(“select count(*) from tb_product”,conn); //取得记录总数rs
\nmyrow = mysql_fetch_array(rs);
\nnumrows=myrow[0];

\n

//计算总页数

\n

pages=intval(numrows/pagesize);

\n

//判断页数设置

\n

if (isset(_GET[\'page\'])){
\n page=intval(_GET[\'page\']);
\n}
\nelse{
\n page=1; //否则,设置为第一页
\n}


\n

三、创建用例用表myTable
\n

\n

\n


\n
create table myTable
\n(id int NOT NULL auto_increment,news_title varchar(50),
\nnews_cont text,add_time datetime,PRIMARY KEY(id))

\n

四、完整代码
\n

\n

\n


\n
<html>
\n<head>
\n<title>php分页示例</title>
\n<meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″>
\n</head>

\n

<body>
\n<?php
\n conn=mysql_connect(“localhost”,”root”,”");
\n //设定每一页显示的记录数
\n pagesize=1;
\n mysql_select_db(“mydata”,conn);
\n //取得记录总数rs,计算总页数用
\n rs=mysql_query(“select count(*) from tb_product”,conn);
\n myrow = mysql_fetch_array(rs);
\n numrows=myrow[0];
\n //计算总页数

\n

 pages=intval(numrows/pagesize);
\n if (numrows%pagesize)
\npages++;
\n //设置页数
\n if (isset(_GET[\'page\'])){
\npage=intval(_GET[\'page\']);
\n }
\n else{
\n//设置为第一页
\npage=1;
\n }
\n //计算记录偏移量
\n offset=pagesize*(page – 1);
\n //读取指定记录数
\n rs=mysql_query(“select * from myTable
\n order by id desc limit offset,pagesize”,conn);
\n if (myrow = mysql_fetch_array(rs))
\n {
\ni=0;
\n?>
\n<table border=”0″ width=”80%”>
\n<tr>
\n <td width=”50%” bgcolor=”#E0E0E0″>
\n<p align=”center”>标题</td>
\n<td width=”50%” bgcolor=”#E0E0E0″>
\n<p align=”center”>发布时间</td>
\n</tr>
\n<?php
\n do {
\ni++;
\n?>
\n<tr>
\n <td width=”50%”><?=myrow["news_title"]?></td>
\n <td width=”50%”><?=myrow["news_cont"]?></td>
\n</tr>
\n <?php
\n }
\n while (myrow = mysql_fetch_array(rs));
\necho “</table>”;
\n}
\necho “<div align=’center’>共有”.pages.”页(“.page.”/”.pages.”)”;
\nfor (i=1;i< page;i++)
\n echo “<a href=’fenye.php?page=”.i.”‘>[".i ."]</a> “;
\n echo “[".page."]“;
\n for (i=page+1;i<=pages;i++)
\necho “<a href=’fenye.php?page=”.i.”‘>[".i ."]</a> “;
\necho “</div>”;
\n ?>
\n</body>
\n</html>


\n

五、总结
\n


\n

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

\n

\n


\n
first=1;
\nprev=page-1;
\nnext=page+1;
\nlast=pages;

\n

if (page > 1)
\n{
\n echo “<a href=’fenye.php?page=”.first.”‘>首页</a> “;
\n echo “<a href=’fenye.php?page=”.prev.”‘>上一页</a> “;
\n}

\n

if (page < pages)
\n{
\n echo “<a href=’fenye.php?page=”.next.”‘>下一页</a>
\n echo “<a href=’fenye.php?page=”.last.”‘>尾页</a> “;
\n}


\n

其实,写分页显示代码是很简单的,只要掌握了它的工作原理。希望这篇文章能够带给那些需要这方面程序web程序员的帮助。


\n

\n