我在砌体库中使用jQuery infinite-scroll插件。我的问题是当按随机ORDER BY rand()
排序时,无限卷轴中的重复记录加载。
例如:如果我已将10张图片添加到数据库,
的index.php:
<?php
include ("includes/db.php");
$per_page = 5;
if (isset($_GET["page"])) {
$page = $_GET["page"];
}
else {
$page=1;
}
$start_from = ($page-1) * $per_page;
$query = "SELECT * FROM data ORDER BY rand() LIMIT $start_from, $per_page";
$result = mysqli_query ($con, $query);
?>
<?php
while ($row = mysqli_fetch_array($result)) {
?>
<div id ="container" class="transitions-enabled infinite-scroll clearfix">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<?php } ?>
<nav id="page-nav">
<a href="index.php?page=<?php echo $page ?>"></a>
</nav>
</div> <!-- END Container -->
按DESCENDING [ORDER BY 1 DESC
]排序时,所有这些代码都没有任何问题。我想我需要为这些代码添加新内容。
的script.js:
$(function() {
var $container = $('#container');
$container.imagesLoaded(function(){
$container.masonry({
gutter: 10,
itemSelector: '.item',
});
});
$container.infinitescroll({
// infinite scroll options...
navSelector : "#page-nav",
nextSelector : "#page-nav a",
itemSelector : ".item",
loading: {
img: 'http://i.imgur.com/6RMhx.gif',
speed: 0,
}
},
function( newElements ) {
var $newElems = $( newElements ).css({ opacity: 0 });
$newElems.imagesLoaded(function(){
$newElems.animate({ opacity: 1 });
$container.masonry( 'appended', $newElems, true );
});
}
);
});
答案 0 :(得分:1)
将参数传递给mysql rand https://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html#function_rand
像这样(未经测试:))如果指定了常量整数参数N,则将其用作种子 value,它产生可重复的列值序列。
if(!isset($_SESSION["rand"])) // generate random number if none
{
$_SESSION["rand"] = rand();//generate random number
}
$rand = $_SESSION["rand"];
$query = "SELECT * FROM data ORDER BY rand($rand) LIMIT $start_from, $per_page";