わかりにくいので、この質問にどのようにタイトルを付けるかわかりませんでした。
ブログ投稿を格納するデータベース テーブルがあり、AJAX を使用して、ページ上でこれらのブログ投稿の無限スクロールを作成しています。最初にページにアクセスすると、最新の 10 個のブログが表示されます。
$start
MySQL クエリに変数と変数を使用$limit
しているため、どのブログから取得を開始し、次にデータベースから取得するブログの数がわかります。私の問題は、ブログを削除しているため、ID が順番に並んでいないため、標準のSELECT * FROM blogs ORDER BY blog_id DESC LIMIT $start, $limit
.
現在SELECT * FROM blogs WHERE blog_id <= $start ORDER BY blog_id DESC LIMIT $limit
、すべてのブログを返すようにしていますが、データベース内の最後のブログに対して無限ループが作成されます。を削除すると、無限ループに=
は<=
なりませんが、最新のブログはスキップされます。
無限ループを引き起こすことなく、最新のブログを含め、SQL ステートメントに$start
and句を使用してデータベースからすべてのブログを取得するにはどうすればよいですか?$limit
編集:クエリを実行する JavaScript コードは次のとおりです。
var loading = false;
$(window).scroll(function(){
var h = $('.post-container').height();
var st = $(window).scrollTop();
if(st >= 0.6*h && !loading && h > 400){
loading = true;
$('#ajaxLoader').show();
$.ajax({
url: "/ajax/blog.process.php?lastid=" + $(".post:last").attr("id"),
success: function(html){
if(html){
$(".post-container").append(html);
$('div#ajaxLoader').hide();
}else{
$('div#ajaxLoader').html('<center>No more posts to show.</center>');
}
loading = false;
}
});
}
});
編集 x2:
$start
このように変数と$limit
変数を切り替えると、LIMIT $limit,$start
結果を取得し始めますが、それらは最も古い結果です...IDを降順で取得して最新の結果が必要です