2013-12-14 4 views
0

Я использую этот код для php-скрипта с бесконечным прокруткой, но у меня есть проблема. Когда я прокручиваю вниз, сообщения повторяются до бесконечности, и я не получил сообщение «No More Posts». Для примера, если у меня есть 10 сообщений в db, а предел равен 5, когда я прокручиваю вниз, чтобы показать еще 5, и получить msg «No More Posts».Infinite scroll php posting repeat

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

Попробуйте установить ваши $ pages, чтобы быть больше, таким образом, когда запрос запустится, он вернет 0 строк и остановит прокрутку. Я был в состоянии воспроизвести эту ошибку, и установил ее, установив ниже

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

, когда вы достигнете дна он будет говорить что-то вроде Поздравляем, вы достигли конца Интернета. , а ваш LIMIT должен быть 4 вместо 5. должен быть

LIMIT 4 OFFSET $offset