2013-12-14 54 views
0

我正在使用此代碼的無限滾動的PHP腳本,但我有一個問題。當我向下滾動帖子重複爲無限時,我沒有收到「沒有更多帖子」的消息。 舉個例子,如果我有10個職位的數據庫,並且限制爲5,當我向下滾動顯示5個其他人並獲得味精「沒有更多職位」。無限滾動php張貼重複

<?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> 

回答

1

嘗試將您的$頁面設置得更大,這樣查詢運行時它將返回0行,並且它將停止滾動。我能夠重現這個錯誤,通過當你到達底部,它會這樣說恭喜你,你達到了互聯網的末尾設置以下

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

固定它。 和你的LIMIT應該是4而不是5. 應該是

LIMIT 4 OFFSET $offset