jquery - MySQL 随机函数的无限滚动问题?

标签 jquery mysql jquery-masonry infinite-scroll masonry

我正在使用 jQuery infinite-scroll砖石画廊上的插件。我的问题是在按随机 ORDER BY rand() 排序时,Infinite Scroll 中会加载重复记录。

例如:如果我向数据库添加了 10 张图片,

  • 正在加载主页 - 15342(随机加载五张图片)
  • 正在加载第二页 - 62985 ( 2 和 5 再次加载 )
  • 在没有 7 和 10 的情况下到达了 END

索引.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 -->

当按降序 [ORDER BY 1 DESC] 排序时,所有这些代码都可以正常工作。我想我需要在此代码中添加一些新内容。

脚本.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 );
        });
    }
);

});

最佳答案

传递一个参数给mysql rand https://dev.mysql.com/doc/refman/5.1/en/mathematical-functions.html#function_rand

If a constant integer argument N is specified, it is used as the seed value, which produces a repeatable sequence of column values.

像这样(未测试:))

    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";

关于jquery - MySQL 随机函数的无限滚动问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29973286/

相关文章:

javascript - HTML 文本框输入模式 0000000-0000

php - 将我在 Apache 服务器上的网站传输到 AWS

php - 使 PHP 代码与 MySQL 一起使用 MsSQL

jQuery 砌体问题

javascript - 防止网站在加载时跳转

javascript - 替换整个 div 而不是 div 内容

php - Jquery 标记处理程序

php - mysql_connect 连接生命周期

jquery - 使用 "left=0"css 属性定位 div

javascript - 如果屏幕尺寸小于,则停止脚本工作