php - Ajax 从数据库中检索

标签 php jquery mysql ajax

我正在创建一个页面,以便在您滚动浏览时从数据库获取图像,但我的问题是,如果您滚动浏览以下网站并从数据库获取图像,当有人向数据库添加新图像时,下一个获取图像将再次显示。

如何预防?

HTML:

<div class="row">

    <div class="col-sm-6  rowL">

    </div>

    <div class="col-sm-6  rowR">            

    </div>

</div>

JS:

$(function()
{
    var load = 0;
    $(window).scroll(function(){

        var win =  $(window).height();
        var doc = $(document).height();
        var top = $(window).scrollTop();
        var loadat = doc - win;
        loadat = loadat - 200;

        if(top >= loadat)
        {
            load++;
            $.post('ajax.php', {load: load}, function(data)
            {                            
                var str = data;
                var res = str.split("split");

                //alert(res);

                $(".rowL").append(res[0],res[1],res[2],res[3],res[4]);
                $(".rowR").append(res[5],res[6],res[7],res[8],res[9]);
            });

        }
    });
});

PHP:

<?PHP
    include 'core/init.php';

    $db = DB::getInstance();
    $img = $db->Get('img'); 


    $load = $_POST['load'];

    $dane = $db->scroll($load);


    foreach($dane as $key=>$value)
    {
        ?>
        <a href="" class="thumbnail">
            <img src="<?PHP echo $value->src; ?>" alt="img"/>
        </a>split
        <?PHP
    }
?>

public function scroll($load)
{
    $load *= 10; 
    $result = $this->_pdo->query("SELECT * FROM img ORDER BY id DESC LIMIT $load,10");
    return $result->fetchAll(PDO::FETCH_OBJ);   
}

最佳答案

这是可以预料到的。例如您的查询返回了以下图像 ID。

  42, 39, 37, 5, 4

假设您的分页由 2 张图片组成,所以

  42, 39,      37, 5,      4
  ^^^^^^       ^^^^^       ^
  page 1       page 2      page 3

添加新图像(例如 ID #50)时,它将显示在查询结果的前面:

 50, 42, 39, 37, 5, 4

现在您的页面已关闭:

 50, 42,     39, 37,      5, 4
 page 1      page 2       page 3

您无能为力解决此问题,因为您正在按“最近的在前”的顺序浏览页面。添加新图像自然会使该新图像成为最新图像,并将所有其他图像向下推一个空格。

当您开始分页时,您可以跟踪结果中的“第一条”记录,并排除高于该记录的任何记录。

例如

 loading page 1 -> highest image = 42
 loading page 2 -> add "where id <=42" to the query

关于php - Ajax 从数据库中检索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30849579/

相关文章:

php - AJAX/PHP 自动显示更新值

javascript - webkit 过渡在 mozilla 和 opera 中结束了吗?

c# - 如何用另一个表/列表中的匹配值替换 id?

MySQL查询评论文章数以及文章详情

php - 如何在Wordpress插件前端使用Shortcode显示表单?

php - 拉维尔 : Eager loading pivot table and sorting on pivot table field

php - Symfony2- Twig : HTML <optgroup> Tag

javascript - Webkit[Chrome/Safari] javascript 选择焦点错误的解决方法(在字段之间使用制表符时)

javascript - Jquery Animate + fadeInOut 元素

C# 根据 mysql 值启用按钮