以下是我的分页代码。我遇到的问题是页面计数显示正确,但是当我点击第2页后,我只得到一个空白页面。
<?php
if (isset($_POST['edit'])) {
if (empty($_GET['page'])) {
$page=0;
}
else {$page = (int)$_GET['page'];}
if ($page == 0){ $page = 1;}
if (ob_get_level() == 0) ob_start();
$per_page = 10;
$p = ($page - 1) * $per_page;
$sql="select * from tba where word='$word' order by id DESC limit ".$p.",".$per_page;
$result=mysql_query($sql) or die(mysql_error());
while ($row=mysql_fetch_array($result)) {
$id=$row['id'];
$word=$row['word'];
$pr=$row['pr'];
if ($pr==0) {
}
else {
?>
<td><span class="style5"><?php echo $id; ?> </span></td>
<td><span class="style5"><?php echo $word?></span></td>
<?php
}
$pages = floor($total / $per_page) + ($total%$per_page>0?1:0);
?>
<center>
<?php
}
for ($i=1;$i<=$pages;$i++) {
print "<a href='?page=".$i."'>".$i."</a> ";
}
echo "<br>You are in page ".$_GET['page'];
}
有人可以告诉我问题是什么吗?
答案 0 :(得分:1)
是时候学习调试了。
事实上,我们只能猜测出了什么问题 虽然只有程序员自己才能肯定地告诉它。这是他们的工作和职责 找出问题的艺术称为调试。
为此,您必须检查每个操作结果
例如,您的查询是否返回任何结果?
如果没有 - 为什么?那个$ word变量来自哪里?但在第二页?
您必须将所有必需的数据传递给其他页面以及$ page变量。
答案 1 :(得分:0)
看起来$ pages = floor ...行在while循环中,这是第一个问题。此外,永远不会设置$ total。
答案 2 :(得分:0)
永远不会设置变量$total
,使总页数不正确
您需要首先使用类似于以下内容的查询来获取行总数:
$sql="SELECT COUNT(id) AS rows FROM tba where word='$word'";
而不是做“楼层”操作并在“其他页面”添加“1”时可以使用“ceil”
而不是:
$pages = floor($total / $per_page) + ($total%$per_page>0?1:0);
您可以使用:
$pages = ceil($total / $per_page);
答案 3 :(得分:0)
好吧,整个输出都在if
语句中,你没有发布POST参数($_POST['edit']
)