PHP将数据库中的项目加载到div中加载更多按钮单击

时间:2014-03-03 06:27:58

标签: php

我有一个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?

2 个答案:

答案 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等。