单击时从MySQL获取随机行

时间:2015-01-22 23:05:43

标签: php jquery mysql

我正在创建一个随机引用生成器并将数据存储在MySQL数据库中。 代码正在运行,但每次单击时它都会继续获取同一行而不是新的随机行。但是,如果我等待30秒并再次点击,它就可以正常工作。我只是希望它能够立即点击。

<script type="text/javascript">
$(document).ready(function() {

$(".display").click(function() {                

  $.ajax({    //create an ajax request to load_page.php
    type: "GET",
    url: "display.php",             
    dataType: "html",   //expect html to be returned                
    success: function(response){                    
        $("#responsecontainer").html(response); 
        setTimeout(response, 5);
        //alert(response);
    }

});
});
});

我怀疑超时功能无法正常工作,因为获取新行需要更长时间。我使用Rand()的命令来获取随机行。我的PHP看起来像这样:

<?php
include("connect.php");
$finds = "SELECT * FROM citater5 ORDER BY RAND() LIMIT 1";
$result = mysql_query($finds, $con) or trigger_error(mysql_error()." ".$finds);

while($data = mysql_fetch_row($result))
{   
echo "<aside class=\"citatout\">";
echo "<div id=\"paradiso\" class=\"text-vertical-center-q\">";
echo utf8_encode("<h1 class=\"animated fadeIn\" align=center>$data[0]</h1>");
echo utf8_encode("<h2 class=\"animated fadeIn\" align=center>$data[1]</h2>");
echo "</div>";
echo "</aside>";
}

?>

为什么每次都没有获取新行?

2 个答案:

答案 0 :(得分:1)

不太确定ORDER BY RAND()是否正常工作。   - 我几乎没有使用PHP几年,但我可能会尝试这样的事情:

<?php
    include("connect.php");
    $totalrows = mysql_num_rows(mysql_query("SELECT * FROM citater5"));
    $finds = "SELECT * FROM citater5 WHERE id='".rand(1,$totalrows)."'";
    $result = mysql_query($finds, $con) or trigger_error(mysql_error()." ".$finds);

    $data = mysql_fetch_row($result);

    echo "<aside class=\"citatout\">";
    echo "<div id=\"paradiso\" class=\"text-vertical-center-q\">";
    echo utf8_encode("<h1 class=\"animated fadeIn\" align=center>$data[0]</h1>");
    echo utf8_encode("<h2 class=\"animated fadeIn\" align=center>$data[1]</h2>");
    echo "</div>";
    echo "</aside>";
?>

并且 - 因为你只得到1个结果,所以不需要经过一段时间()。

希望这有点帮助。

答案 1 :(得分:0)

与其他人一样,rand()可能不是最好用的,但我不认为这是导致你的问题的原因。如果结果在短时间内显示相同的结果,则很可能会缓存结果。

您可以尝试关闭缓存:

$.ajaxSetup({ cache: false });

或者使用随机数或时间戳在ajax调用中附加URL。