我正在使用此处提供的代码段

我的PHP代码是:

<?PHP
    /***  This is for bottomless listing of record from a table ****/
    $sql = 'SELECT * FROM agency_list ORDER BY id DESC LIMIT 0, 5';
   $query = $dbo4->prepare($sql);   // dbo4 coming from config.php
   $query->execute();
   $list = $query->fetchAll();
 ?>

相关的css代码是:

.content {
    padding: 10px;
    min-height: 100px;
   text-align: center;
}

#loader {
    text-align: center;
    display: none;
}
#items { 
    list-style: none; 
   text-align: left; 
}
#items li { 
    margin: 0 0 10px 0;
    background: #FFFFFF;    /* original -- f1f0f0*/
    border: 1px solid #999999;
    border-radius: 5px;
    color: #333333;
 }
 #items li h2 {    
   font-size: 18px;
   padding: 5px;
}

#items li p {
   padding: 5px;
}

java脚本代码(end-less-scroll.js)如下:

var is_loading = false; // initialize is_loading by false to accept new loading
var limit = 5; // limit items per page
$(function() {
    $(window).scroll(function() {
        if($(window).scrollTop() + $(window).height() == $(document).height()) {
            if (is_loading == false) { // stop loading many times for the same page
                // set is_loading to true to refuse new loading
                is_loading = true;
                // display the waiting loader
                $('#loader').show();
                // execute an ajax query to load more statments
                $.ajax({
                    url: 'load_more.php',
                    type: 'POST',
                    data: {last_id:last_id, limit:limit},
                    success:function(data){
                        // now we have the response, so hide the loader
                        $('#loader').hide();
                        // append: add the new statments to the existing data
                        $('#items').append(data);
                        // set is_loading to false to accept new loading
                        is_loading = false;
                    }
                });
            }
       }
    });
});

上面的代码调用了具有以下代码的load_more.php:

<?PHP
    include 'config.php';

    $last_id    =   $_POST['last_id'];
    $limit      =   5; 

    if (isset($_POST['limit'])) 
    {
        $limit  =   intval($_POST['limit']);
    }

    // selecting the items for page params
    try 
    {
        $sql    =   'SELECT * FROM agency_list WHERE id > :last_id ORDER BY id DESC LIMIT 0, :limit';
        $query  =   $dbo4->prepare($sql);

        $query->bindParam(':last_id', $last_id, PDO::PARAM_INT);
        $query->bindParam(':limit', $limit, PDO::PARAM_INT);
        $query->execute();

        $list   =   $query->fetchAll();
    } 
    catch (PDOException $e) 
    {
        echo 'PDOException : '.  $e->getMessage();
    }

    $last_id = 0;

    foreach ($list as $rs) 
    {
        $last_id = $rs['id'];
        ?>
            <li>
                <h2>&nbsp;&nbsp;&nbsp;<a href='#'><?PHP echo  '[' .$rs['id'] .'] ' . $rs['agency_nm']; ?></a>
                <img height = "32px" width = "32px" src="images/face_smile_1.png"></h2>

                <blockquote>
                    <p>
                        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Et non ex maxima parte de tota iudicabis? 
                        Item de contrariis, a quibus ad genera formasque generum venerunt. Sit enim idem caecus, debilis. 
                        Duo Reges: constructio interrete.
                        <BR>
                        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Et non ex maxima parte de tota iudicabis? 
                        Item de contrariis, a quibus ad genera formasque generum venerunt. Sit enim idem caecus, debilis. 
                        Duo Reges: constructio interrete.
                    </p>
                </blockquote>
                <h5>&nbsp;&nbsp;&nbsp;<?PHP echo $rs['agency_addr_landmark']; ?></h5>
                <h5>&nbsp;&nbsp;&nbsp;<?PHP echo $rs['agency_city']. ' - ' . $rs['agency_pin'] . ' [' . $rs['agency_state'] . '] ' ; ?></h5>                                            
                <h5>&nbsp;&nbsp;&nbsp;<?PHP echo $rs['agency_contact_per_1']; ?></h5>

                <h5>&nbsp;&nbsp;&nbsp;<font color = "maroon"><?PHP echo $rs['agency_contact_addr1'];?></font></h5>

                <p style="align:right;">
                    <a href="#" class="tags" style="background-color:darkgreen;">Details</a>
                    <a href="#" class="tags" style="background-color:#955251;">Update</a>
                    <a href="#" class="tags" style="background-color:#5B5EA6;">More</a>
                </p>
                <BR>
            </li>
            <BR>
        <?PHP
    }

    if ($last_id != 0) 
    {
        echo '<script type="text/javascript">var last_id = '.$last_id.';</script>';
    }

    // sleep for 1 second to see loader, it must be deleted in prodection
    sleep(1);
?>

最后,提取的记录将在此div中列出(在HTML文件中)

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script type="text/javascript" src="js/end-less-scroll.js"></script>

<div class="row">
    <div class="twelve columns">            
        <div class="content">
            <ul id="items">
                <?PHP
                    $last_id = 0;
                    foreach ($list as $rs) 
                    {
                        $last_id = $rs['id']; // keep the last id for the paging
                        ?>
                        <li>
                            <h2>&nbsp;&nbsp;&nbsp;<a href='#'><?PHP echo  '[' .$rs['id'] .'] ' . $rs['agency_nm']; ?></a><img height = "32px" width = "32px" src="images/face_smile_1.png"></h2>

                            <blockquote>
                                <p>
                                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Et non ex maxima parte de tota iudicabis? Item de contrariis, a quibus ad genera formasque generum venerunt. Sit enim idem caecus, debilis. Duo Reges: constructio interrete.
                                    <BR>
                                    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Et non ex maxima parte de tota iudicabis? Item de contrariis, a quibus ad genera formasque generum venerunt. Sit enim idem caecus, debilis. Duo Reges: constructio interrete.
                                </p>
                            </blockquote>
                            <h5>&nbsp;&nbsp;&nbsp;<?PHP echo $rs['agency_addr_landmark']; ?></h5>
                            <h5>&nbsp;&nbsp;&nbsp;<?PHP echo $rs['agency_city']. ' - ' . $rs['agency_pin'] . ' [' . $rs['agency_state'] . '] ' ; ?></h5>                                            
                            <h5>&nbsp;&nbsp;&nbsp;<?PHP echo $rs['agency_contact_per_1']; ?></h5>

                            <h5>&nbsp;&nbsp;&nbsp;<font color = "maroon"><?PHP echo $rs['agency_contact_addr1'];?></font></h5>

                            <p style="align:right;">
                                <a href="#" class="tags" style="background-color:darkgreen;">Details</a>
                                <a href="#" class="tags" style="background-color:#955251;">Update</a>
                                <a href="#" class="tags" style="background-color:#5B5EA6;">More</a>
                            </p>
                            <BR>

                        </li>
                        <BR>
                        <?PHP
                    }
                ?>
                <script type="text/javascript">var last_id = <?PHP echo $last_id; ?>;</script>
            </ul>
            <!-- this is the paging loader, now is hidden, it wiil be shown when we scroll to bottom --> 
            <p id="loader"><img src="images/ajax-loader.gif"></p>
        </div><!-- content -->          
        <hr>
    </div>
</div>

我的问题是

(1)如果我在给出的两个MySQL查询中按ASC顺序对记录进行排序,则代码工作正常。 但是,如果我将排序顺序从ASC(如链接教程中给出的)更改为DESC,则逻辑仅列出5条记录,然后再次列出第4,3,2,1条记录并停止工作。 我知道我在逻辑上做得很愚蠢,但却找不到我的错误。 请帮我。

(2)假设我需要按其他一些列排序(这不是PRIMARY键 - 这里是id PRIMARY KEY),例如假设我想通过agency_nm对记录进行排序,并将它们列在底部少列表方式中,我是否应该在AJAX部分(或load_more.php)中进行一些更改? 抱歉,但是我对AJAX的了解并不好-因此这个愚蠢的问题。

感谢/向大家致以亲切的帮助和建议。

#1楼 票数:0

换行:

$sql = 'SELECT * FROM agency_list WHERE id > :last_id ORDER BY id DESC LIMIT 0, :limit';
$sql = 'SELECT * FROM agency_list WHERE id < :last_id ORDER BY id DESC LIMIT 0, :limit';

您所要做的就是更改此运算符:> to <

  ask by Satya Prakash Nigam translate from so

未解决问题?本站智能推荐:

3回复

防止重复无限滚动ajax加载器

对我来说,在这里看到一个明确的解决方案可能只是为时已晚,但我想我会从任何有意见的人那里得到一些想法...... 我正在处理的网站有很多用户帖子。 当你到达或接近底部时,我已经让所有滚动事件处理程序在下一批100个帖子中工作到ajax。 我的问题是......我如何防止以下情况?
1回复

这是在我的网站上创建无限滚动系统的正确方法吗?

我最近学习了SQL,Ajax和(面向对象)PHP的基础知识,这些基础知识是通过创建用户构建的信息供稿来使用的。 但是,目前该Feed仅将数据库中的20条最新帖子加载(因为一次加载所有帖子会对页面加载时间产生负面影响)。 我认为尝试实现无限滚动系统(类似于Twitter和Facebook使
1回复

从数据库加载更多项目〜无限滚动

我是ajax / php的新手,因此正在尝试找出执行此操作的最佳方法。 我已将1500个项目的sql数据库填充到页面中。 我想将30个项目加载到页面中,然后当用户到达网页底部时,我希望它再加载30个项目。 到目前为止,我的网页上显示了30个项目,并带有一个过滤项目的下拉菜单。 我
1回复

使用Ajax,PHP和MySQL进行无限滚动时出错

我正在尝试在应用程序中实现无限滚动,但是在到达页面末尾时,这将引发错误。 这是ajax代码: 在这里,我展示了来自DataBase的数据: 这是另一个PHP文件以加载更多数据: 在Chrome Developer Tool上显示的错误是 jquery.js
2回复

无限的ajax滚动分页循环

我正在使用无限的ajax滚动。 它正在工作,因为我可以点击加载更多项目,这将加载内容。 然而,我应该停在最后一页,并显示“没有更多的帖子”,而是仍然显示“加载更多项目”链接,点击时再次从第2页开始分页。 安慰: 我应该显示“没有更多的帖子” - 而是继续如下: IAS:
2回复

使用带有MySQL数据库的无限滚动

我找到了一个很好的ajax / jquery无限滚动插件( http://hycus.com/2011/03/15/infinite-scrolling-like-new-twitter-with-php-mysql-jquery/ )对我的内容来说很好,但是我遇到一个问题-它只调用一次load
1回复

重置无限滚动以显示通过AJAX检索到的新结果

我有一个过滤器表单,该表单在更改时会用来自数据库的新过滤结果填充容器div(#results)。 但是在更改过滤器之后, Infinite Ajax Scroll插件会在第二页中显示第一个搜索的结果。 在更改事件中,我需要完全重置旧结果并仅显示新结果。 我尝试了许多解决方案,但是什么也没做
1回复

Ajax无限向下滚动分页。 在ajax调用中使用异步时图像未显示

当用户向下滚动页面时,我正在使用ajax加载数据。 我正在使用async = false; 除非已经运行的调用完成,否则它将停止对ajax函数的调用。 是的,不建议使用异步。 但是为了防止数据混乱,我必须使用它。 这是我的ajax function 但异步调用不允许浏览器显示我