2013-12-14 3 views
0

무한 스크롤이 PHP 스크립트에이 코드를 사용하고 있지만 문제가 있습니다. 게시물을 아래로 스크롤하면 무한대로 반복되고 "더 이상 글이 없습니다"라는 메시지가 표시되지 않습니다. 예를 들어, DB에 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은 5 대신 4가되어야합니다. 은

LIMIT 4 OFFSET $offset 
이어야합니다.