Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用MySQL和PHP计算结果出现在哪个页面上?_Mysql_Sql - Fatal编程技术网

如何使用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:中一行的位置和增量编号,请参阅下面的答案:可能很有帮助