有哪些方法可以处理长列表的分页?

时间:2009-01-29 05:55:06

标签: php pagination

我想知道是否有任何标准方法可以保持实时列表的正确分页。例如,如果我转到第2页,在Stack Overflow上,并且在查看第1页时提交了一个新问题,我如何保持第2页与我开始查看第1页时相同?

很多时候人们只会使用LIMIT进行SQL查询,但这不允许您跟踪第1页的结束位置和第2页的开始。

我想这可以通过跟踪上次看到的记录的ID来完成。

2 个答案:

答案 0 :(得分:3)

我认为大多数用户都习惯了这种行为并期望它发生。当他们转到下一页时,他们看到页面末尾的项目是他们刚刚开启的项目是当前页面的第一项,他们可能会意识到这是因为添加了一个新项目。我知道我之前依赖于此行为作为用户,以便在浏览页面时知道何时添加了新内容。

所以我认为你不应该这样做。

答案 1 :(得分:1)

我们为所有分页的Web UI执行此操作(您请求的)行为。 (我实际上已经在SO中提出了这个问题,并且已经拒绝了 - 但我发现当前的重新设定令人讨厌并且意外 - 我讨厌点击“下一步”并且前n个项目是上一页中的最后一个项目。)

诀窍是保留(通常在隐藏变量中)足够的关键信息,以便在项目1之前立即定位列表,并紧接在您正在查看的页面的最后一项之后。然后您的上一页和下一页链接提供该信息以进行提交。实际上,您可以保留“上一页”和“下一页”键。这对于插入删除非常直观。

要记住的一件事是,第1页上的刷新(假设SO是最新项目的第一个列表)应该(a)激活“上一个”链接,如果它被隐藏,或者(b)刷新列表从顶部,包括添加的项目。换句话说,“刷新”总是从第一个项目中重新显示页面,但如果页面上的第一个项目也是列表中的第一个项目,现在有新项目,则从列表的开头重新显示。通过我们的列表,我们通常有“第一页”,“上一页”,“刷新”,“下一页”和“最后一页”的标准链接。

查看新项目的另一种方法是始终拥有以前的链接,它会备份整个页面或列表顶部的较小部分 - 这就是用户看到新项目的方式(但我更喜欢隐藏/禁用上一个/下一个,前一个和/或下一个没有项目。