如何提供更新内容的下一页?

问题描述:

如果您知道如何更好地制定问题,请随时编辑标题。 (标签也是一个问题。)在这个一般形式中,问题可能太难了,所以让我们考虑一个具体的例子。如何提供更新内容的下一页?

您可以通过请求/questions ?sort=newest页面得到的计算器问题一屏。下一页链接导致/questions?page=2 &sort=newest。我想在服务器端,请求被翻译成带有LIMIT子句的SQL查询。这种方法的问题在于,如果在用户浏览第一页时添加了新问题,则他的第二页将以他已经看到的一些问题开始。 (如果他有,每页10个问题,以及10点新的问题正好是补充,他会得到完全相同的内容第二次!)

有没有解决这个普遍存在的问题一个优雅的方式?我意识到这不是什么大问题,至少不是用于*,但仍然如此。

(除了存储每个客户端请求历史)最好的办法我是用/questions?answer_id=NNN格式。服务器返回以请求的答案开头的页面,并将下一页上的第一个答案的标识放入下一页链接。必须有一种方法来为此编写SQL,对吧?

它是如何通常完成的?或者有更好的方法?

我见过
+0

我喜欢你的建议解决方案。我没有看到任何东西可以打败它(我也无法想象任何更好的东西)。 :) 我会在下面的SQL去。 – 2008-09-30 15:57:10

这不能做一个简单的方法。例如,这里*中的“未答复”列表按投票数排序。因此,如果您要保存您正在查看的网页的最后一个ID(在Cookie,请求,会话中),并且某人在浏览第2页时上传了一条帖子,则第3页自最近提供投票权以来尚未完成后可能已移动到页面1或2

只有做到这一点是加载在某人会议的完整列表方式。请不要......

正如已经提到的那样,让我们​​希望现在人们习惯这一点。

+0

完全同意。而且,如果你有这么多的输出,最好带一份报告或者更好的搜索过滤选项。如果您有多个相关的Web输出页面,则布局设计可能需要重构 – 2008-09-30 17:24:48

大多数网站不解决这个问题 - 他们告诉你,包括你已经看到了一些内容的页面。

你可能会认为这是一个功能 - 当你点击“下一步”,看看你面前正在看到一些内容,那就是要再次回到前面,因为有一些新的内容的信号。

标记每个问题及其输入数据库的时间,将上一次加载的首页作为Cookie或网址的一部分加载,并在您前进时将搜索范围限制为nn+displaynum

但我不打扰。这种行为足够统一,大多数用户期望它,并且它可以作为新数据可用时的标志。你甚至可以打开一个新的选项卡/窗口,从列表顶部开始,看看发生了什么。

我相信SQL(MySQL的)将是:

SELECT * 
FROM entries 
WHERE entry_id >= @last_viewed_entry_id 
ORDER BY entry_id 
LIMIT 50