我正在创建一个页面,以便在滚动时从数据库中获取图像,但我的问题是如果您滚动浏览以下网站并在有人向数据库添加新图像时从数据库获取图像,下一步获取图像将再次显示。
我该如何预防?
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);
}
答案 0 :(得分:0)
这是可以预料的。例如您有来自查询的以下图片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
你无法解决这个问题,因为你在“最近的第一次”订购中浏览了你的网页。添加新图像自然会使新图像最新,并将所有其他图像推到一个空间。
您可以在开始分页时跟踪结果中“第一条”记录的内容,并排除高于此值的任何内容。
e.g。
loading page 1 -> highest image = 42
loading page 2 -> add "where id <=42" to the query