我有一个 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/