php中分页程序之基于留言板详解
发布:smiling 来源: PHP粉丝网 添加日期:2014-01-15 16:12:15 浏览: 评论:0
文章是重点是讲php中的分页原理,同时我们是利用一个实现来讲解如何在php中实现分页,这个就是基于自己写的留方板程序了,有需要的朋友可以参考一下,很适合于初学者哦。
分页的关键问题其实在于Mysql的一个关键字limite这个关键字后边跟的两个数字,第一个是需要记录的开始行数,第二个数字是从这个开始行数后取得几行记录——这一点大家不要误以为是从第几行开始到第几行结束,相差很远的。
看看我们index.php的第19行,代码如下:
$recordSql = $sql. ” LIMIT “.$page*$pagesize.”,”.$pagesize;
其中变量$page的判断在程序的第8行和第9行得到的,代码如下:
if(isset($_GET['page'])&&$_GET['page']!=”) $page=$_GET['page'];
else $page=0;
当然大家也看到了$_GET['page']变量这个下文会说到,变量$pagesize我们在第7行自己定义的,也就是每页显示多少条记录,我们定义的是10条,当变量$page=0的时候我们语句最终会是这样的,代码如下:
- $recordSql = "SELECT a . * , b.name, b.email, b.qq, c.revert_time, c.revert
- FROM post a
- LEFT JOIN revert c ON ( a.id = c.post_id ) , guest b
- WHERE a.guest_id = b.id
- ORDER BY a.id DESC
- " LIMIT 0,10";
就是从0条记录开始取得10个记录结果——这个是包括第0条记录的;
当$page=1的时候呢?可想而知了——这个时候$page*$pagesize=10,当然是从……不说了,再说就罗嗦了。
还有需要说的是,为什么我们要在取得总行数之后才加上这个limit呢,很简单嘛,如果我们在取得结果记录数的时候就加上这个limit,我们总行数永远不会大于10,因为加上之后他最多返回的记录数就是10啊兄弟。——这个显然不符合实际情况,所以我们在执行了,代码如下:
mysql_num_rows(mysql_query($sql));
取得总记录数,之后才加上limit关键字的,好了我们已经取得了总记录数,设置了每页显示的记录数10,现在我们需要的就只有总页数了,这个小学的问题我就不说了吧?当然是总记录数除以每页显示的数就是总页数了——当然也有除不尽的时候,例如总记录数11每页显示10个,我们需要分几页呢?当然是两页呢,怎么才能让11/10=2呢?——显然是错误的,但是实际生活就这样并不是完美的数学。使用ceil函数啊,看看我们现在有什么了啊,代码如下:
总记录数,$numRecord = mysql_num_rows(mysql_query($sql));
总页数,$totalpage = ceil($numRecord/$pagesize);
我们什么都不缺了,就差如何显示“上一页下一页”了,很简单,两个判断就搞定了,看index.php的159-163行,第160行,代码如下:
if($page>0) echo "<a href=index.php?page=".($page-1).">上一页|</a>" ;
如果变量$page>0的话,也就是当前的页码大于0说明有上一页,那么就显示“上一页”的链接,这个链接里面的$page需要减一,例如当前页是2,那么上一页当然是1了是不是,当我们点击上一页的时候,随着这个链接将会把page=1传递过去,这种依靠链接传递变量的方式就是get方法。 这就回到了程序8行9行进行处理了。
在161行,我们做的判断是,如果当前页数小于总记录数-1——因为我们的页码是从0开始的,所以总记录数要减一进行判断才符合实际。如果这个判断成立,说明还有下一页,下一页的时候$page当然要加一了。
好了整个分页就是这样了,只要记住,如何取得总记录数,如何为sql语句加上limit关键字,如何判断显示上下页,一切都ok了,完整的代码如下:
- $pagesize = 10;//每一页显示多少留言记录
- if(isset($_GET['page'])&&$_GET['page']!='') $page=$_GET['page'];
- else $page=0;
- $sql = "SELECT a . * , b.name, b.email, b.qq, c.revert_time, c.revert
- FROM post a
- LEFT JOIN revert c ON ( a.id = c.post_id ) , guest b
- WHERE a.guest_id = b.id
- ORDER BY a.id DESC";
- $numRecord = mysql_num_rows(mysql_query($sql));
- $totalpage = ceil($numRecord/$pagesize);
- $recordSql = $sql. " LIMIT ".$page*$pagesize.",".$pagesize;
- $result = mysql_query($recordSql);
- <table width="800" border="0" align="center" bgcolor="#fefefe">
- <?php
- while($rs=mysql_fetch_object($result)){
- ?>
- <tr>
- <td class="tdhx">留言人:<?php echo $rs->name?> |Email:<?php echo $rs->email?>|QQ:<?php echo $rs->qq?>|留言时间:<?php echo date("Y-m-d H:i:s",$rs->post_time+8*3600)?></td>
- </tr>
- <?php
- if(isset($_SESSION['login'])&&$_SESSION['login']){
- ?>
- <tr>
- <td class="tdhx"><a href="revert.php?id=<?php echo $rs->id?>">回复</a> | <a href="delete.php?id=<?php echo $rs->id?>">删除</a></td>
- </tr>
- <?php
- }
- ?>
- <tr>
- <td>留言内容:<?php echo nl2br(htmlspecialchars($rs->post))?><br/>
- <font color="Red">
- 回复内容:<?php echo nl2br(htmlspecialchars($rs->revert))?>[<?php if($rs->revert_time!="") echo date("Y-m-d H:i:s",$rs->revert_time+8*3600)?> ]
- </font>
- </td>
- </tr>
- <tr><td height="3px" bgcolor="##FF6600"></td></tr>
- <?php
- }
- ?>
- </table>
- <table width="800" border="0" align="center" bgcolor="#B1C3D9">
- <tr>
- <td >
- <?php
- if($page>0) echo "<a href='index.php?page=".($page-1)."'>上一页|</a>" ;
- if($page<$totalpage-1) echo "<a href='index.php?page=".($page+1)."'>下一页</a>" ;
- ?></td>
- </tr>
- </table>
Tags: php 分页程序
- 上一篇:php文章内容分页实例程序
- 下一篇:php分页可利用表格来分页类
相关文章
- ·php分页代码与分页原理(2013-11-12)
- ·PHP分页显示制作(2013-11-13)
- ·PHP实现翻页跳转功能(2013-11-13)
- ·自定义PHP分页函数(2013-11-13)
- ·小谈PHP&MYSQL分页原理及实现(2013-11-13)
- ·php中分页显示文章标题(2013-12-10)
- ·PHP MySQL分页显示(2013-12-10)
- ·一款php分页代码(2013-12-16)
- ·php分页代码(2013-12-16)
- ·PHP+AJAX无刷新分页实现代码详解(2014-01-03)
- ·PHP 分页代码与分页原理解析(2014-01-06)
- ·php文章内容分页实例程序(2014-01-07)
- ·php分页可利用表格来分页类(2014-01-15)
- ·简单入门级php分页代码(2014-05-10)
- ·PHP简单分页函数代码总结(2014-06-18)
- ·php分页实例程序函数(2014-07-18)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)