【发布时间】:2011-07-09 01:32:36
【问题描述】:
我有一个 SQL 查询,它输出一堆符合特定条件的行。我正在尝试在此过程中添加分页,以便更易于使用。
我的流程是这样的:
- 算出这个页面的下限,算出这个页面的上限(例如1 - 20, 21 - 40等)
- 从 MySQL 表中提取这些行
- 列出这些行
- 如果超过20个,添加
floor($totalRows / 20)页 - ???
- 分页
我的分页似乎工作不正常,但最后一页(无论它可能是什么)列出的行数比它应该的行数少一页。这是我的代码:
$page = $_GET["p"];
$bL = (($page - 1) * 20) + 1;
$tL = $page * 20;
$total = mysql_num_rows(mysql_query("SELECT id FROM coupons WHERE zone = '$zone' AND dateExp > CURDATE()"));
if($tL > $total)
{
$tL = (($page - 1) * 20) + ($total % 20);
}
$gotRows = "SELECT * FROM coupons WHERE zone = '$zone' AND dateExp > CURDATE() ORDER BY retailerName LIMIT " . $bL . ", " . $tL;
//list all those rows
$numPages = floor($total / 20) + 1;
echo "<p id='results'>" . $total . " result" . $plural . " · Displaying " . $bL . " to " . $tL . " </p>";
echo "</table>";
$pG = 1;
while($pG <= $numPages)
{
if($pG == $page)
{
echo $pG;
}
else
{
echo "<a href='zone?z=" . $zone . "&p=" . $pG . "'>" . $pG . "</a>";
}
if($pG != $numPages)
{
echo "·";
}
$pG = $pG + 1;
}
有什么帮助吗?
编辑: 没关系,我解决了行问题。但是我底部页面链接错误的问题仍然存在。在第 1 页上,它可以正常工作 - “1”不是链接,“2”是。但是,在第 2 页上,只有“1”作为链接显示。 “2”不显示。
【问题讨论】:
-
关于 SO 处理 PHP/MySQL 分页有很多问题。你已经看过这些了吗?
-
分页现在工作正常 - 我只是想修复我的页面链接错误。
标签: php mysql sql pagination