我有一个main.php页面,其中有一个while循环,显示数据库中的前10个项目。我想在点击加载更多按钮后加载下10个项目。
$res = mysql_query("SELECT * FROM `posts` ORDER BY `date` DESC LIMIT 10");
if($res && mysql_num_rows($res) > 0){
while($row = mysql_fetch_assoc($res)){
$id = $row['id'];
?>
<div class="main_page">
item id <?php echo $id; ?>
</div>
<button class="load_more">Load More</button>
...
这样做的好方法是什么?非常感谢任何帮助!
更新:
现在我有了这个加载更多按钮的脚本:
<script type="text/javascript">
$(document).ready(function(){
$(".load_more").click(function (){
$('.load_more').html('<img src="images/ajax-loader.gif" />');
$.ajax({
url: "loadmore.php?id=" + $(".ad_display:last").attr("id"),
success: function(html){
if(html){
$(".main_page").append(html);
$('.load_more').html('Load More');
}else{
$('.load_more').replaceWith('No posts');
}
}
});
});
});
</script>
提交过滤器的形式后,网址看起来像这样: ?的index.php搜索=安培;类别= 0&安培; ad_order = 1
如何将搜索(即使为空),ad_order和类别值传递给loadmore.php?
答案 0 :(得分:3)
limit 0, 10
将显示查询中的前10个项目。 limit 20,10
将显示以第20项开头的10个项目(从零开始计算)。当您调用执行查询的页面时,可以将页码或当前检索到的项目数传递给参数。这将涉及在limit
中使用不同的起始索引重新加载当前页面,或者发出一个允许您在不重新加载页面的情况下加载更多项目的ajax查询。
答案 1 :(得分:1)
除了Octern发布的答案,不知道你想要在第二个问题上实现什么,但尝试:
<script type="text/javascript">
//saving the GET variables
ad = <?php echo $_GET['ad_order']; ?>
catg = <?php echo $_GET['category']; ?>
search = <?php echo $_GET['search']; ?>
//default value of record to start from
rec = 0;
$(document).ready(function(){
$(".load_more").click(function (){
$('.load_more').html('<img src="images/ajax-loader.gif" />');
$.ajax({
//passing them here
//URL updated to pass rec
url: "loadmore.php?id=" + $(".ad_display:last").attr("id")+"&search="+search+"&category="+catg+"&ad_order="+ad+"&rec="+rec,
success: function(html){
//updating counter to start from record
rec += 10;
if(html){
$(".main_page").append(html);
$('.load_more').html('Load More');
}else{
$('.load_more').replaceWith('No posts');
}
}
});
});
});
</script>
在loadmore.php
中,您需要相关代码才能获取上述$_GET
值
您的查询将类似于:
$res = mysql_query("SELECT * FROM classifieds WHERE date < '".mysql_real_escape_string($_GET['id'])."' AND search = '".$_GET['search']."' AND category = '".$_GET['category']."' AND ad_order = '".$_GET['ad_order']."' ORDER BY date DESC LIMIT '".$_GET['rec']."',10");
因此,每次点击load_more时,限制都会更改为LIMIT 0,10
- &gt; LIMIT 10,10
- &gt; LIMIT 20,10
等。