0

我之前发布了这个问题,但我不知道原因,但现在我知道了。另一个问题是无法控制的。

我正在制作一个页面功能(下一页等),并且需要我的 $limiter 来选择每页 9 个查询。我遇到的问题是第二页(9,9)没有进来。

if(isset($_GET["p"]) && is_numeric($_GET["p"]) && $_GET["p"] > 1) {
        $currentPage = $_GET["p"];
        $limiter = $currentPage * 9;
} else {
        $currentPage = 1;
        $limiter = 0;
}

$finalQuery = "SELECT * FROM forum_replies WHERE thread_id = '1' ORDER BY id ASC LIMIT " . $limiter . ",9";

因此,如果 page 为 1,则 $limiter 为 0。所以.. 0,9 进来

下一个应该是 9,9,但代码完全跳过了,所以我错过了第二页

第三页作品是 18,9

所以.. 它去 0,9 - 18,9, 27,9 等等.. 完全跳过 9,9。我会在我的 if(isset)) 函数中添加什么以使其全选而不是跳过 9,9。

4

3 回答 3

1

如果我没有错,我认为您对 $limiter 变量的计算不正确。它应该是 $limiter = ($currentPage - 1) * 9;

if(isset($_GET["p"]) && is_numeric($_GET["p"]) && $_GET["p"] > 1) {
    $currentPage = $_GET["p"];
    $limiter = ($currentPage -1) * 9;
} else {
    $currentPage = 1;
    $limiter = 0;
}

$finalQuery = "SELECT * FROM forum_replies WHERE thread_id = '1' ORDER BY id ASC LIMIT " . $limiter . ",9";
于 2013-06-30T12:41:43.313 回答
0

您缺少第 1 页,因为您的if condition.

if(isset($_GET["p"]) && is_numeric($_GET["p"]) && $_GET["p"] > 1) {

这被设置为跳过分页逻辑,除非页面大于 1。所以它错过了 page = 1。

基于您的代码,仅当p为 0 时,如果 p = 1,您的代码将呈现 0,9,那么您的代码将呈现 9,9

于 2013-06-30T12:35:11.420 回答
0

尝试改变这个:

if(isset($_GET["p"]) && is_numeric($_GET["p"]) && $_GET["p"] > 1) {

对此:

if(isset($_GET["p"]) && is_numeric($_GET["p"]) && $_GET["p"] >= 1) {

和这个:

$limiter = $currentPage * 9;

对此:

$limiter = ($currentPage-1) * 9;

因为如果 $currentPage 为 1,您希望您的限制为 0,9。

于 2013-06-30T12:44:57.977 回答