0

我刚开始学习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 旋转器中。

这可能吗?我将如何实施呢?我知道我在解释我的问题方面真的很糟糕,所以如果我遗漏了更多细节,如果你能告诉我,我可以提供帮助。谢谢!

4

1 回答 1

0

因此,如果我理解您的意图,您希望从数据库中提取事件并将它们传递到页面上的 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);
}
于 2012-07-13T01:42:05.607 回答