分页错误第二页没有记录

时间:2013-02-12 13:36:35

标签: php mysql phpmyadmin

我搜索了关于php的分页,我找到了一个很好地解释代码的网站,我的问题是关于代码,每次我点击“下一步”链接,第2页都有结果。我不明白为什么第2页没有结果。这是代码:

 <?php 
 mysql_connect("localhost", "root", "") or die(mysql_error()); 

 mysql_select_db("kp_and_harang") or die(mysql_error()); 

 if (!(isset($pagenum))) 

 { 

 $pagenum = 1; 

 } 
 $data = mysql_query("SELECT * FROM students") or die(mysql_error()); 

 $rows = mysql_num_rows($data); 





 $page_rows = 4; 





 $last = ceil($rows/$page_rows); 




 if ($pagenum < 1) 

 { 

 $pagenum = 1; 

 } 

 elseif ($pagenum > $last) 

 { 

 $pagenum = $last; 

 } 





 $max = 'limit ' .($pagenum - 1) * $page_rows .',' .$page_rows; 

 $data_p = mysql_query("SELECT * FROM students $max") or die(mysql_error()); 



 while($info = mysql_fetch_array( $data_p )) 

 { 

 Print $info['surname']; 

 echo "<br>";

 } 

 echo "<p>";


 echo " --Page $pagenum of $last-- <p>";
 if ($pagenum == 1) 

 {

 } 

 else 

 {

 echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=1'> <<-First</a> ";

 echo " ";

 $previous = $pagenum-1;

 echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$previous'> <-Previous</a> ";

 } 


 echo " ---- ";



 if ($pagenum == $last) 

 {

 } 

 else {

 $next = $pagenum+1;

 echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$next'>Next -></a> ";

 echo " ";

 echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$last'>Last ->></a> ";

 } 

 ?> 

2 个答案:

答案 0 :(得分:0)

首先,除非绝对必要,否则不建议使用SELECT *,您应该使用特定字段。现在你要在同一张桌子上进行两次全面搜索。仅当您只想计算行时才选择一个字段。

您还应该使用PDO函数代替已弃用的mysql_*

你确定应该有第二页吗? students表中有多少条记录?

调试代码转储查询结果并检查"SELECT * FROM students $max"查询。

答案 1 :(得分:0)

您将网页编号放在网址中,但是您永远不会从网址中找回它?

我改变了这一部分:

if (!(isset($pagenum))) 
{ 
   $pagenum = 1; 
} 

到此:

 if (!(isset($_GET['pagenum']))) 
 { 
    $pagenum = 1; 
 } else {
    $pagenum = $_GET['pagenum'];
 }

它似乎完美无缺。

修改

要获取您不必获取所有内容的总行数。您可以执行以下操作:

$result = mysql_query("SELECT count(*) FROM students") or die(mysql_error());
$rows = mysql_fetch_row($result);