javascript - 无限滚动php发帖重复

标签 javascript php jquery mysql

我将此代码用于具有无限滚动的 php 脚本,但我遇到了问题。当我向下滚动帖子时,帖子会无限重复,但我没有收到“没有更多帖子”的消息。 例如,如果我在数据库中有 10 个帖子,限制为 5 个,当我向下滚动以显示其他 5 个帖子并收到一条消息“没有更多帖子”时。

<?php

// Connect do DB
try {
    $conn = new PDO('mysql:host=localhost;dbname=fb','root','');
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e) {
    die('ERROR: ' . $e->getMessage());
}

// Pagination
$limit = 4;
$total = $conn->query("SELECT COUNT(*) FROM posts")->fetchColumn();
$pages = ceil($total / $limit);
$page = min($pages, filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT, array(
'options' => array(
'default'   => 1,
'min_range' => 1,
),
)));
$offset = ($page - 1) * $limit;

$sql = "SELECT * FROM posts ORDER BY id DESC LIMIT 5 OFFSET $offset";

?>
<center>
<div class="posts-container">
<?php foreach ($conn->query($sql) as $post) { ?>
<div class="posts" style="width: 400px">
    <h1>
    <?= $post['id']; ?>
    </h1>
    <p>
    <?= $post['body']; ?>
    </p>
</div>
<?php } 
if ($page < $pages) { 
?>
<nav id="page-nav">
    <a href='index.php?page=<?= ($page + 1) ?>'>Next >></a>
</nav>
<?php } ?>
</div>
</center>
</div>

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.js"></script>
<script type="text/javascript" src="http://www.infinite-scroll.com/wp-content/plugins/infinite-scroll/jquery.infinitescroll.js"></script>
<script>

$('.posts-container').infinitescroll({
    navSelector     : "#page-nav",
    nextSelector    : "#page-nav a",
    itemSelector    : ".posts",
}, function(newElements, data, url){
});
</script>

最佳答案

尝试将 $pages 设置得更大,这样当查询运行时它会返回 0 行并且会停止滚动。我能够重现此错误并通过设置以下内容修复它

$pages = ceil($total / $limit)+1;

当你到达底部时,它会说“恭喜,你已到达互联网的尽头”之类的内容。 你的 LIMIT 应该是 4 而不是 5。 应该是

LIMIT 4 OFFSET $offset

关于javascript - 无限滚动php发帖重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20588354/

相关文章:

javascript - 使用 Three.js 从 DDS 立方体贴图文件加载立方体贴图

javascript - 为什么 setTimeout 无法识别函数名称?

javascript - iPad 悬停事件 jQuery

javascript - 如何在没有 ID 和 Class 的情况下检查 Span 内的文本

javascript - 如何禁用 href

php - MySQL 查询Where Column Like Column

php - 数据不使用复选框插入到表中

php - 根据产品属性在 Magento 中创建购物车规则

javascript - 使用 JavaScript 在 div 上加载 php 页面

javascript - 停止 Touchscroll 也会阻止点击链接