<?php
/*基于php+mysql的数据显示分页算法*******
*************by PREDATOR****************
***************2009-5-21****************
*/
/**此算法可实现数据列表分页显示功能,可显示
出共几条记录,共几页,第几页,首页,尾页,以及上下翻页功能
*/
$page=$_GET['page']; //获取页号初始值
$dpage=$_GET['dpage']; //获取当前第几页
if($page=='')
{ $page=0; } //如果页号初始值为空(第一次打开该页),其值置0
if($dpage=='')
{ $dpage=1; } //如果当前页码为空(第一次打开),其值置1
$p=5; //每页显示记录数
$sql1="select * from $msg_tab ";
$result1=mysql_query($sql1,$db) or die("query error1!");
$max=mysql_num_rows($result1);
/*以上代码用来获取要显示数据的数量,max变量所存数据极为数据量*/ $sql2="select * from $msg_tab order by msg_time desc limit $page,$p ";
$result2=mysql_query($sql2,$db) or die("query error2!");
//获取数据集,limit $page,$p意为从$page开始显示,一次显示$p条记录 /*
此处为数据显示语句,大家可根据喜好自己编写..........
.
.
.
.
.
.
*/
if($max%$p)
{
$page_count=(int)($max/$p)+1; //计算页数最大值,如果数据量不能整除每页显示量,则页数应加1
}
else
{
$page_count=$max/$p; //如果数据量能整除每页显示量,页数直接为计算结果
}
$a=0;
for($i=1;$i<$page_count;$i++)
{
$a=$a+$p; //控制“尾页”功能,经for循环后$a变量中所存数据为尾页的页码。
}
echo"共".$max."条留言 ";
echo"共".$page_count."页 ";
echo"第".$dpage."页 ";
echo"<a href='$php_self?page=0'>首页</a>"; ///链接:跳转至首页
if($page!=0)
{
$perpage=$page-$p; // 向上翻页,页号值减$p
$ppage=$dpage-1; //页码值减1
echo"<a href='$php_self?page=$perpage&dpage=$ppage'>上一页</a>";
}
if(($page+$p)<$max)
{
$newpage=$page+$p; // 向下翻页,页号值加$p
$npage=$dpage+1; //页码值加1
echo" <a href='$php_self?page=$newpage&dpage=$npage'>下一页</a>";
}
echo" <a href='$php_self?page=$a&dpage=$page_count'>尾页</a>";
/*
此算法对于php+mysql编写的网站均适用,结构及功能较为简单,适合跟我一样的新手练习使用,
时间仓促,水平有限,疏漏不妥之处在所难免,欢迎各位批评指正。
*/
?>
/*基于php+mysql的数据显示分页算法*******
*************by PREDATOR****************
***************2009-5-21****************
*/
/**此算法可实现数据列表分页显示功能,可显示
出共几条记录,共几页,第几页,首页,尾页,以及上下翻页功能
*/
$page=$_GET['page']; //获取页号初始值
$dpage=$_GET['dpage']; //获取当前第几页
if($page=='')
{ $page=0; } //如果页号初始值为空(第一次打开该页),其值置0
if($dpage=='')
{ $dpage=1; } //如果当前页码为空(第一次打开),其值置1
$p=5; //每页显示记录数
$sql1="select * from $msg_tab ";
$result1=mysql_query($sql1,$db) or die("query error1!");
$max=mysql_num_rows($result1);
/*以上代码用来获取要显示数据的数量,max变量所存数据极为数据量*/ $sql2="select * from $msg_tab order by msg_time desc limit $page,$p ";
$result2=mysql_query($sql2,$db) or die("query error2!");
//获取数据集,limit $page,$p意为从$page开始显示,一次显示$p条记录 /*
此处为数据显示语句,大家可根据喜好自己编写..........
.
.
.
.
.
.
*/
if($max%$p)
{
$page_count=(int)($max/$p)+1; //计算页数最大值,如果数据量不能整除每页显示量,则页数应加1
}
else
{
$page_count=$max/$p; //如果数据量能整除每页显示量,页数直接为计算结果
}
$a=0;
for($i=1;$i<$page_count;$i++)
{
$a=$a+$p; //控制“尾页”功能,经for循环后$a变量中所存数据为尾页的页码。
}
echo"共".$max."条留言 ";
echo"共".$page_count."页 ";
echo"第".$dpage."页 ";
echo"<a href='$php_self?page=0'>首页</a>"; ///链接:跳转至首页
if($page!=0)
{
$perpage=$page-$p; // 向上翻页,页号值减$p
$ppage=$dpage-1; //页码值减1
echo"<a href='$php_self?page=$perpage&dpage=$ppage'>上一页</a>";
}
if(($page+$p)<$max)
{
$newpage=$page+$p; // 向下翻页,页号值加$p
$npage=$dpage+1; //页码值加1
echo" <a href='$php_self?page=$newpage&dpage=$npage'>下一页</a>";
}
echo" <a href='$php_self?page=$a&dpage=$page_count'>尾页</a>";
/*
此算法对于php+mysql编写的网站均适用,结构及功能较为简单,适合跟我一样的新手练习使用,
时间仓促,水平有限,疏漏不妥之处在所难免,欢迎各位批评指正。
*/
?>
建议封装成一个class吧,这样调用起来也比较方便