mysqlphp使用javascript旋转器随机选择


mysql php select random with javascript rotator

我刚开始学习PHP,一直在尝试建立一个网站来学习。我在这里找到了一个在互联网上旋转文本的javascript脚本,看起来像:

    <script language="JavaScript">
    function rotateEvery(sec)
    {
    var Quotation=new Array()
    // QUOTATIONS
    Quotation[0] = 'First quotation';
    Quotation[1] = 'Second quotation';
    Quotation[2] = 'Third quotation';
    Quotation[3] = 'Fourth quotation';
    Quotation[4] = 'Fifth quotation';
    Quotation[5] = 'Sixth quotation';
    Quotation[6] = 'You can add <b>as many</b> quotations <b>as you like</b>';
    var which = Math.round(Math.random()*(Quotation.length - 1));
    document.getElementById('textrotator').innerHTML = Quotation[which];
    setTimeout('rotateEvery('+sec+')', sec*1000);
    }
</script>

我还有一个名为events的数据库表,它有三个字段(id,when,tag)when是日期,tag是事件的描述(例如,我家的圣诞派对/万圣节)。

我想做的是选择今天发生的事件,并将它们随机放在我的javascript旋转器中。

这可能吗?我将如何着手实施这一点?我知道我真的不善于解释我的问题,所以如果我遗漏了更多的细节,如果你能告诉我,我可以帮忙的话。谢谢

因此,如果我理解您的意图,您希望从数据库中提取事件,并将其传递到页面上的JavaScript中,以便在旋转器中使用:

在您的PHP中

使用您已经使用的MySQL API来执行查询。使用旧的mysql_*()函数如下所示。(注意:实际上不建议使用mysql_*()函数,但似乎最有可能的是您当前正在使用的函数。如果发现其他情况,我会更新…

// Assuming `when` is a real DATE or DATETIME data type in MySQL...
// compare to CURDATE() to get today's
$result = mysql_query("SELECT tag FROM events WHERE DATE(when)=CURDATE()");
if ($result) {
  // array to hold all the output
  $events = array();
  while ($row = mysql_fetch_assoc($result)) {
    // Add the event to your array
    $events[] = $row['tag'];
  }
  // After building the array, encode it as JSON
  // Later you'll echo this into your JavaScript in place of the array...
  $events = json_encode($events);
}

稍后在HTML/JavaScript输出中

将JSON字符串(数组)输出到页面上的JavaScript中:

function rotateEvery(sec)
{
  // The JSON from PHP output here
  // Would look something like
  // ["Event 1","Event 2","Event 3"]
  var Quotations = <?php echo $events; ?>;
  var which = Math.round(Math.random()*(Quotation.length - 1));
  document.getElementById('textrotator').innerHTML = Quotation[which];
  setTimeout('rotateEvery('+sec+')', sec*1000);
}