【问题标题】:show result from PDO query every 10 seconds每 10 秒显示一次 PDO 查询的结果
【发布时间】:2014-01-08 13:16:26
【问题描述】:

不确定这是否可行,但我有一个基本的 PDO 查询,它将结果存储在一个数组中。

<?php
// configuration
$dbtype     = "";
$dbhost     = "";
$dbname     = "";
$dbuser     = "";
$dbpass     = "";
// database connection
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);
$title = 'PHP AJAX';
// query
$sql = "SELECT * FROM thankyou";
$q = $conn->prepare($sql);
$q->execute(array($title));
$q->setFetchMode(PDO::FETCH_BOTH);
// fetch
while($r = $q->fetch()){
echo"<br>";
print_r ($r);
}
?>

现在有点想不通了,我也从未使用过 JavaScript。我可以轮流查看结果,一次显示一个 5-10 秒,然后再显示另一个吗?它可以是随机的,也可以是有序的,我并不大惊小怪。我找到了这个,它有效,但不知道如何将数组放入其中。我知道一个是客户端,一个是服务器端。

<script type="text/javascript">
var rotatingTextElement;
var rotatingText = new Array();
var ctr = 0;

function initRotateText() {
rotatingTextElement = document.getElementById("textToChange");
rotatingText[0] = rotatingTextElement.innerHTML; // store the content that's already on     the page
rotatingText[1] = "need to write PDO array here";
setInterval(rotateText, 5000);
}
function rotateText() {
ctr++;
if(ctr >= rotatingText.length) {
ctr = 0;
}
rotatingTextElement.innerHTML = rotatingText[ctr];
}
window.onload = initRotateText;
</script>

这是显示的结果

<span id="textToChange">this is were the result is displayed</span>

如果我需要以完全不同的方式来做,如果有人能指出我正确的方向,那不是问题。

【问题讨论】:

  • 使用 AJAX 通过 JavaScript 从服务器轮询数据。在不同的浏览器中使用它的一种简单方法是使用 jQuery(jquery.com;尽管还有其他 JS 库)。以下是 AJAX 文档:api.jquery.com/jquery.ajax
  • 感谢 Reeno 的阅读工作。
  • 或者数组是固定的,你只需要获取一次,然后每隔几秒显示一个随机元素?使用items[Math.floor(Math.random()*items.length)];,其中items是一个JS数组

标签: javascript php pdo


【解决方案1】:

如果您对 JavaScript 不太熟悉,我还建议您使用一些 JS 库来完成这项任务。事实上,Prototype.js 有一个专门用于此目的的类:http://prototypejs.org/doc/latest/ajax/Ajax/PeriodicalUpdater/index.html

一个工作示例:http://www.tutorialspoint.com/prototype/prototype_ajax_periodicalupdater.htm

【讨论】:

    【解决方案2】:

    最后我决定使用 AJAX 调用一个单独的 PHP 页面并且工作正常这是更新的页面。

    <script type="text/javascript">
      $(function() {
          getStatus();
    });
    function getStatus() {
        $('div#status').load('thankyou.php')//Thankyou being the page the query is on
        setTimeout("getStatus()",5000);//refreshes every 5 seconds
    }
    </script>
    

    查询本身是一个标准的 PDO

    $query = $db->query("SELECT * FROM `thankyou` ORDER BY RAND() LIMIT 1
    

    感谢大家的指点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-16
      • 1970-01-01
      • 1970-01-01
      • 2011-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-28
      相关资源
      最近更新 更多