如何使用MySQL和PHP计算结果出现在哪个页面上?
我想创建一个特定论坛帖子的链接。要做到这一点,我需要计算帖子所在线程中的哪个页面,因为我正在使用分页。如何根据每页的结果数计算邮件将位于哪一页 我使用以下查询查找线程中的消息总数:如何使用MySQL和PHP计算结果出现在哪个页面上?,mysql,sql,Mysql,Sql,我想创建一个特定论坛帖子的链接。要做到这一点,我需要计算帖子所在线程中的哪个页面,因为我正在使用分页。如何根据每页的结果数计算邮件将位于哪一页 我使用以下查询查找线程中的消息总数: SELECT COUNT(message_id) AS total_messages, thread_id FROM forum_messages WHERE thread_id = 1 通常,页码不取决于记录数,而是取决于每页记录数: page_no = (message_position DIV recor
SELECT
COUNT(message_id) AS total_messages, thread_id
FROM forum_messages
WHERE thread_id = 1
通常,页码不取决于记录数,而是取决于每页记录数:
page_no = (message_position DIV records_per_page) + 1
只有当消息位置在线程id中连续时,才能将其转换为任何有意义的内容。否则,您无法计算页码。您需要根据分页顺序对行进行编号,然后根据页面大小计算页面:
-- supposing a page size of 10 and pagination order by message_id
select message_id, ceiling(message_number/10) as page
from (
select message_id, @row_number:=@row_number+1 AS message_number
from forum_messages, (select @row_number:=0) AS row_number
order by message_id
) as numbered_messages
where message_id=<the id of the message>
这些博客文章解释了在MySQL中模拟行数的技巧:
他们将按什么顺序来?你没有指定,所以你不知道。你正在使用分页,但你不知道它是如何工作的?奇怪。A这和链接到特定记录有什么关系?B就你所问的,不可能知道。这些代码所做的只是告诉您有多少匹配的记录。它不会告诉你关于这些记录的任何信息,它们的顺序,等等。关于如何获取select:中一行的位置和增量编号,请参阅下面的答案:可能很有帮助