我搜索了关于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> ";
}
?>
答案 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);