<?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."条留言&nbsp;&nbsp;";
    echo"共".$page_count."页&nbsp;";
echo"第".$dpage."页&nbsp;"; 
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"&nbsp;&nbsp;&nbsp;&nbsp;<a href='$php_self?page=$newpage&dpage=$npage'>下一页</a>";
}
echo"&nbsp;<a href='$php_self?page=$a&dpage=$page_count'>尾页</a>";
    


/*
   此算法对于php+mysql编写的网站均适用,结构及功能较为简单,适合跟我一样的新手练习使用,
   时间仓促,水平有限,疏漏不妥之处在所难免,欢迎各位批评指正。
*/



?>