从mysql数据库一个接一个地返回的随机数据?

时间:2011-05-08 22:25:09

标签: php mysql sql

我有一个事实数据库,我想随机显示其中一个事实,比如10秒,然后选择另一个事实并显示10秒钟等等。

目前我可以使用下面的代码显示随机事实,但我对如何显示10秒然后显示不同的事实感到有点困惑。任何帮助或建议都会很棒吗?感谢。

<?php 
  $linkid = $_GET['linkID'];            
  $query  = "SELECT *  
               FROM facts 
           ORDER BY RAND() 
              LIMIT 1";

  $result = mysql_query($query);

  while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    $factxt = $row ['factxt'];
    echo $factxt;
  }
?>

嗨,好的,我尝试了下面建议的两种方法,使用ajax和jquery,但两者都从数据库返回相同的错误:

警告:mysql_query()[function.mysql-query]:无法通过第4行的getfact.php中的套接字'/var/run/mysqld/mysqld.sock'(2)连接到本地MySQL服务器

这是getfact.php的第4行,$query = "SELECT * FROM facts order by rand() limit 1"; $result = mysql_query($query);

有什么我做错了吗?

3 个答案:

答案 0 :(得分:3)

您可以在jQuery库的帮助下使用Ajax。

示例代码:

setInterval(retrieveFact, 10000); // call retrieveFact() every 10 seconds

function retrieveFact() {
    // make an asynchronous call to getfact.php
    $.post('/getfact.php', function(data) { 
       // when it returns, set the content of div with id=#factbox
       $('#factbox').html(data); 
    });
});

此处,getfact.php将是您在问题上粘贴的代码。

在你的html某处放置将接收文本的元素:

<div id="factbox"></div>

更多参考资料:

答案 1 :(得分:2)

首先,您必须包含jQuery库,然后使用此示例代码。

somefile.php / HTML:

<script type="text/javascript" src="jquery.min.js"></script>
<script>
function getRand() {
$.ajax({
url: "getFact.php",
success: function(response) {
$("#random").html(response).hide().fadeIn("slow");
}
});
};
setInterval("getRand()", 10000);
</script>
<div id="random"></div> 

getFact.php:

<?php 
$linkid = $_GET['linkID'];          
$query  = "SELECT *  FROM facts order by rand() limit 1";
$result = mysql_query($query);
$factxt= $row ['factxt'];
echo $factxt;
?>

当LIMIT为1时,您不需要将信息放入循环中。

答案 2 :(得分:0)

您可以使用ajax,其间隔通过ajax / getJSON加载某些数据,或者在iframe中加载此页面,并每10秒添加一次自动刷新(元刷新)。