0

我搜索了有关 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> ";

 } 

 ?> 
4

2 回答 2

0

您将页码放在 url 中,但您从未从 url 中检索它?

我改变了这部分:

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);
于 2013-02-12T14:24:19.230 回答
0

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

您还应该使用不推荐PDO使用的函数。mysql_*

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

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

于 2013-02-12T13:53:43.720 回答