0

好的,我对我的页面发生了什么感到有些困惑。我在底部有页码,一张满是物品的桌子说 23 种不同的物品。

每页应一次显示 5 个项目。我有显示的页面发送带有 pagenumber = 什么的 get。

所以基本上我有这个:

$highLimit = $pageNo*5;
$lowLimit = $highLimit-5;
$sql = mysql_query("SELECT * FROM items 
                   ORDER BY id DESC 
                   LIMIT $lowLimit, $highLimit");

所以会发生这样的事情:第一页工作正常并显示正确的 5。然后第二页显示下一个 10,第三页显示最后一个 13。然后第 4 页显示第 3 页的最后 8 个,第 5 页显示最后 3 个第 4 页。

当我为 $sql 输出 num_rows 时,它显示 5、10、13、8、3。我看不出它如何获得比我输入的限制更多的行。

限制为 0 5、5 10、10 15 等,似乎有效。

那么 $sql 是否保留了以前页面中的原始数据或其他内容?

我真的不知道问题是什么希望有人能帮忙。

只是为了澄清这是当前页面和该页面上数据的 ID

第 1 页:

23, 22, 21, 20, 19

第2页:

18, 17, 16, 15, 14
13, 12, 11, 10, 9

第 3 页:

13, 12, 11, 10, 9
8,  7,  6,  5,  4
3, 2, 1

第 4 页:

8,  7,  6,  5,  4
3, 2, 1

第 5 页:

3, 2, 1
4

2 回答 2

1

LIMIT 的语法可选地是起始偏移量,然后是您想要的行数(文档)。所以你的第二个值应该总是 5

于 2013-10-04T02:46:52.517 回答
0

那么试试这个方法

$page = isset($_GET["page"]) ? $_GET["page"] : 1;

$max = 5;
$page--;
$lmt = $page * $max;
$page++;
//count number of records from table
$count = 20;

$pages = ceil($count/$max);
$stmt =  $db->prepare("SELECT * FROM table_name ORDER BY id DESC LIMIT ".$lmt.", 3");
于 2013-10-04T02:59:29.270 回答