Merhaba arkadaşlar başlıkla da istediğim gibi Scroll aşağı indikçe veri yüklenmesini istiyorum fakat bunu yapabilmek için gerekli JavaScript/Ajax bilgisine sahip olmadığımdan bende hazır bir kaç kod bulup onları yazdım. Fakat örnek olarak aldığım sitedeki kodlarda hatalı malesef;

Kodun orjinali şu şekilde;





XTZ
<script></script>
<script>
$(function(){

var id=$("#mesaj:eq(0)").attr("name")-5;//idi mesaj olanın sayfada en üsttekinin namesini aldık.Sebebi o veritabanındaki en son veri.
//yukardaki idle sürekli 5 azaltıp 5 veri çekecez taki kalmayana kadar.

$(window).scroll(function(){//sayfadaki scroll oynarsa
var scroll=$(this).scrollTop();//scrolun yükseklik konumunu al
var uzunluk=$(document).height()-$(this).height();//documentin scroll boyunu bulduk.Yaniiçerikten pencere boyutunu çıkardık

if(scroll==uzunluk){//scroll konumu bulduğumuz uzunluğa eşitse .Yani dökümanın sonuna vardıysa
$(".yuke").html("");//loading.gif i koy
var s=$(this).scrollTop();//o anki scrolun konumunu al
$.post("mesaj.php",{"id":id},function(veri){//ajaxla mesaj php ye son id i at 5 veriyi çek
if(veri!="yok"){//veri varsa
$(".mesaj_ana").append(veri);//verileri mesaj_ana clasının sonuna koy
id-=5;//id i 5 azalt
$(this).scrollTop(s);
}else{
$(".yukle").html('

Veri kalmadi
');//veri yoksa veri yoku yaz
}
});
}

});

});
</script>




$baglan=mysql_connect("localhost","root","");//mysql başlantısı
$veritabani=mysql_select_db("pdo",$baglan);
if($veritabani){

$cek=mysql_query("select * from mesajlar order by id desc limit 5");//son 5 veriyi çekiyoz
$say=mysql_num_rows($cek);
if($say>0){
while($al=mysql_fetch_array($cek)){
echo "
".$al["mesaj"]."
";//verileri tek tek ekrana basıyoz.
}
}

}
?>







$id=$_POST["id"];//idi aldık
$baglan=mysql_connect("localhost","root","");//mysql bağlantısı
$veritabani=mysql_select_db("pdo",$baglan);
if($veritabani){
if($id>0){
$cek=mysql_query("select * from mesajlar order by id desc limit $id,5");//gelen idten sonraki 5 veriyi aldık
$say=mysql_num_rows($cek);
if($say>0){
while($al=mysql_fetch_array($cek)){
echo "
".$al["mesaj"]."
";//verileri yaz
}
}else{
echo "yok";//veri yoksa yok yaz
}

}else{
echo "yok";//id küçükse gene yok yaz
}

}
?>


Burada mantık hatası var sanırım, pek bilmiyorum ama kodu kendi hostingimde denediğimde sürekli aynı verileri aldığını ve sonsuz bir veri yüklemesi olduğunu gördüm daha sonra html kodundaki

var id=$("#mesaj:eq(0)").attr("name")-5

şu satırı gördüğümde mantık hatası var zannettim tekrar söylüyorum bilmiyorum.

eq() kodu belirli bir nesneyi seçtirmek için kullanıldığını öğrendim bu durumda en üstteki nesneyi seçtiriyor ve ondan 5 çıkartıyor.
Dyelim ki en üstten alağıya 5 tane veri çektik; bunların idleri

20 19 18 17 16 15 şeklinde.

Scroll en aşağıya indiğinde bu sefer 20-5 olacağından 15 sonucu çıkacak ve php kodundaki gibi 15,5 şeklinde bir limit ile yeni verileri çekecek fakat scroll yine en aşağıya indiğinde yine en üstteki divi seçicek ve yine 20-5 olacağından yine 15,5 şeklinde aynı verileri çektirecek diye zannediyorum.

Ki böyle de oluyor.

Ben bu hatayı halletmek için şöyle bir şey yaptım;






UstaDerslik
<script></script>
<script>
$(function(){
var denemes = 0;
var id=$("#mesaj:eq(0)").attr("name")-5;//idi mesaj olanın sayfada en üsttekinin namesini aldık.Sebebi o veritabanındaki en son veri.
//yukardaki idle sürekli 5 azaltıp 5 veri çekecez taki kalmayana kadar.
$(window).scroll(function(){//sayfadaki scroll oynarsa


var scroll=$(this).scrollTop();//scrolun yükseklik konumunu al

var uzunluk=$(document).height()-$(this).height();//documentin scroll boyunu bulduk.Yaniiçerikten pencere boyutunu çıkardık
if(scroll==uzunluk){//scroll konumu bulduğumuz uzunluğa eşitse .Yani dökümanın sonuna vardıysa
denemes = 5+denemes;
$("#yukle").show();//loading.gif i koy
$("#yukle").html("Yükleniyor");//loading.gif i koy
var s=$(this).scrollTop();//o anki scrolun konumunu al
$.post("mesaj.php",{"id":denemes},function(veri){//ajaxla mesaj php ye son id i at 5 veriyi çek
if(veri==""){
$(".yukle").html('
Veri kalmadi
');

}
var s=$(this).scrollTop();
$(".mesaj_ana").append(veri);
$(this).scrollTop(s);

});
}

});

});
</script>





K
S
H
G
F






Bu da çok saçma oldu sanırım :/

Yardım eder misiniz?