确定论坛帖子所在的页面

时间:2013-07-26 19:16:24

标签: php mysql

如何做到这一点?

我有一个名为posts的表,其中包含我每页显示10个帖子的特定主题的所有帖子。

所以我得到了这些表:

id   | title
8976 | Determine which page a post is in

和帖子表

id | author | message | topic_id
1  |  jim   | bla bla | 8976
2  |  jake  | bla bla | 8976
3  |  bob   | bla bla | 8976
4  |  rob   | bla bla | 8976
5  |  john  | bla bla | 8976
6  |  aron  | bla bla | 8976
7  |  eric  | bla bla | 8976
8  |  brad  | bla bla | 8976
9  |  ken   | bla bla | 8976
10 | james  | bla bla | 8976
11 |  dan   | bla bla | 8976
12 |  stan  | bla bla | 8976
13 |  nick  | bla bla | 8976
14 | justin | bla bla | 8976
15 |  steve | bla bla | 8976
16 |  mark  | bla bla | 8976
17 |  billy | bla bla | 8976
18 |  harry | bla bla | 8976
19 |  david | bla bla | 8976
20 |  brian | bla bla | 8976

为什么我要这样做?要将用户重定向到他们编辑的帖子。现在如果它在另一页然后是第一页,那么是的,它们不会被重定向到它。

我不会使用预制论坛。我只是将它用于学习和娱乐,它可能永远不会上线。

我知道如何计算和获取行数,但然后找出它所在的页面我不知道。我数学很糟糕,我真的很可怕。所以请帮助我朝正确的方向发展。

修改

现在我正在使用:

$test = $db->query("SELECT COUNT(*) FROM posts WHERE topic_id = $topic_id AND id <= $id")->fetchColumn();

echo "Post is located on page: ".$test[0];

是否有效,但每个页面上的最后两篇帖子都会获得当前页面+ 1:/

如果theres允许在最后一页上说一个帖子,它会在第1页上说明

2 个答案:

答案 0 :(得分:1)

假设您正在显示按ID排序的帖子,您可以这样做:

SELECT COUNT(*) FROM posts WHERE topic_id = 8976 AND id <= 15

这将为您提供ID为15的帖子的位置。现在您可以查看此职位的页面:

$page = floor($position / 10);

所以在这个例子中,第15页是第2页。

答案 1 :(得分:1)

这是一个mySQL解决方案,用id=19获取帖子的页码 。我正在考虑每页10个。

SELECT FLOOR(COUNT(id)/10) + 1
    FROM posts
    WHERE id < 19