php - 如何避免在 "infinite scrolling"系统中从数据库中获取重复的帖子?

标签 php javascript html mysql

我有一个 AJAX 系统,它从数据库中获取帖子,然后在我的布局中创建 DIV 来放置它们。当用户到达页面末尾时,API 将加载许多其他帖子。问题是,我怎样才能得到以下 10 个帖子,这些帖子只是最后一个已经加载的帖子的先前帖子?当我在顶部加载新帖子时,我希望发生同样的事情,如何以正确的顺序显示每个帖子而不会丢失任何帖子或重复任何帖子?

对于糟糕的解释和糟糕的英语,我们深表歉意。

最佳答案

您需要存储最后检索到的消息的 ID。当您提交新请求时,发送最后收到的消息 ID 并让 php/mysql 从那里返回结果。


如果您的查询看起来像这样:

SELECT * FROM posts WHERE username='redcurley' LIMIT 10

然后你需要修改成更像:

SELECT * FROM posts WHERE username='redcurley' AND id > :id LIMIT 10

您也可以使用 Scott 提到的偏移方法。


编辑:我假设您使用的是自动递增 ID,因为它很常见。由于您不是,您需要一些方法来跟踪返回的最后一条消息。您可以通过对记录进行排序来做到这一点,使它们每次都以相同的顺序出现并使用偏移量。

关于php - 如何避免在 "infinite scrolling"系统中从数据库中获取重复的帖子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13478901/

相关文章:

php - PHP 中的 preg_match 和 UTF-8

php - 如何在特定列中选择具有给定值的同一表中的两个不同行

php - CakePHP 错误 : Call to a member function find() on a non-object

php - 如何在 Zend Framework 中设计域层对象来表示多个对象和单个对象?

javascript - 链接未显示在 D3 v4 强制布局中

html - 基础 zurb 中的切换顶部栏问题

javascript - 在axios get请求中传递Integer参数

javascript - 图片未在网站上呈现?

javascript - 当按钮向右浮动时,ng-click 不起作用

javascript - 调整 HTML 内容的大小以使其适合 div 并且还需要保持纵横比