gpt4 book ai didi

php - 选定行之间特定行的偏移量

转载 作者:行者123 更新时间:2023-11-30 01:22:55 25 4
gpt4 key购买 nike

我正在为我的网站编写一个非常小的论坛..我真的不想使用vb和其他论坛系统。

所以

topics ( title , id )
posts ( text , id , topic_id )

有一个页面显示给定用户的所有条目(帖子)

在每个用户帖子的此页面中,我显示主题名称和该帖子的简短摘要

问题出在这里

当我单击主题名称时..我不想转到主题的第一页。我想要包含该特定帖子的确切页面。

所以我得到了帖子 ID(比如说 666)我可以使用它获取主题信息(假设标题:topic A)

这样我就可以获得主题A中帖子的总数

可以说

$total_posts_intopic = 250 ;
$per_page = 15 ;

我现在需要的是 post #666 的偏移量来计算页码

那么我如何获得帖子#666topic A帖子之间的偏移量?

或者有没有更简单的方法来做到这一点?

注意:帖子编号 666 表示除主题 A 之外的所有主题中总共有 666 个帖子

最佳答案

参见this SQL Fiddle进行完整演示。

我使用的查询(适应您的示例)如下。这个想法是你填写 topic_id (我目前有 topic_id = 1 )和帖子的 id (我目前有 id = 666 )。结果将是一个数字,指示给定帖子在给定主题中的位置。

要确定页码,您可以使用:

$pageNumber = floor(($queryResult - 1) / $postsPerPage);

查询:

SELECT
currentCount
FROM
(
SELECT
id,
@counter := @counter + 1 AS currentCount
FROM
posts,
(SELECT @counter := 0) AS countTable
WHERE
topic_id = 1
) AS associatedCountTable
WHERE
id = 666;

查询的工作原理如下:

  • posts 表与计数器变量交叉连接。这是有效的,因为变量设置为 0当MySQL“创建”countTable时(当它查看 FROM 子句时)并且每次选择一行时该变量都会增加 1(因为 SELECT 子句针对每个结果行都会“执行”)。
  • 因为WHERE子句(选择正确的主题)在SELECT之前“执行”子句中,只有您感兴趣的主题中的行才会增加计数器。
  • 前面步骤的结果是一个新表 associatedCountTable所选主题中的每个帖子占一行。每行都有帖子的 id在第一列中,在第二列中有一个简单的递增计数器,名为 currentCount .
  • 决赛WHERE子句采用上表并选择带有 id 的行的计数器列您感兴趣的帖子的名称(在您的示例中为 666)。

关于php - 选定行之间特定行的偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18347197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com