Usando rolagem infinita com um banco de dados MySQL
Eu encontrei um bom plugin de rolagem infinita ajax / jquery http: //hycus.com/2011/03/15/infinite-scrolling-like-new-twitter-with-php-mysql-jquery) que consegui moldar bem o meu conteúdo, mas estou tendo um problema - ele chama o script loadmore.php apenas uma vez. Deixe-me mostrar o código:
No meu arquivo index.php:
<script type="text/javascript">
$(window).scroll(function(){
if($(window).scrollTop() == $(document).height() - $(window).height()){
$('div#loadmoreajaxloader').show();
$.ajax({
url: "loadmore.php?lastid=" + $(".postitem:last").attr("id"),
success: function(html){
if(html){
$("#postswrapper").append(html);
$('div#loadmoreajaxloader').hide();
}else{
$('div#loadmoreajaxloader').html('<center>No more posts to show.</center>');
}
}
});
}
});
</script>
Esta seção chama meu arquivo loadmore.php e envia o ID da última postagem. Isso funciona apenas na primeira vez em que rolar para o final da página, ele carrega as entradas do loadmore.php, mas não chama loadmore.php novamente. Meu arquivo loadmore.php tem o seguinte código:
<?php
include('./includes/config.php');
if($_GET['lastid']){
$query = 'SELECT * FROM db WHERE id < "'.$_GET['lastid'].'" ORDER BY id DESC LIMIT 0,3';
$result = mysql_query($query);
while ($rec = mysql_fetch_object($result)) {
[SET MY VARS]
?>
[HTML & PHP DISPLAYING MY POST]
<?php
}
}
?>
As três postagens exibidas após a primeira chamada do Ajax aparecem perfeitamente, exatamente da maneira que eu quero que sejam exibidas com os dados corretos. Mas não consigo fazer com que as próximas 3 postagens apareçam após as 3 primeiras aparições.
Então, se eu tiver 5 posts por padrão no meu index.php, eu rolar para o final, o ajax chama mais 3 posts, eles são exibidos perfeitamente, mas nada é exibido depois disso, embora ainda haja muitos posts para mostrar. Onde está o meu problema, assistentes ajax / jquery?