0

我有一个 HTML 站点,其页面使用 PHP 代码查询 MySQL 数据库。该表包含 3 列(日期、时间、剩余时间)。根据当前日期和时间,我希望 HTML 页面返回并显示“剩余”列中的相应值。

诀窍是我希望这个值自动更新(AJAX?),而用户不必刷新页面或单击按钮。

到目前为止,我使用的 PHP 可以根据日期显示“剩余”值,但我还没有弄清楚如何查询日期和时间,也不知道如何自动刷新。

到目前为止我已经弄清楚的PHP代码

(注意:quantitytest_config.php只包含主机名/用户名/密码)

    <?php

include 'quantitytest_config.php';

//connection to the database
$dbhandle = mysql_connect($hostname, $username, $password) 
  or die("Unable to connect to MySQL");

//select a database to work with
$selected = mysql_select_db("grace59_countdown",$dbhandle) 
  or die("Could not select countdown");

//execute the SQL query and return records
$result = mysql_query("SELECT remaining FROM quantity WHERE salesdate=CURDATE()");
//fetch tha data from the database
while ($row = mysql_fetch_array($result)) {
   echo "Quantity:".$row{'remaining'}."<br>";
}

//close the connection
mysql_close($dbhandle);
?>

在此先感谢您的帮助。非常感激。

4

2 回答 2

2

使用jQuery.load,这很容易,以下代码段将调用您的 PHP 脚本并每 10 秒更新一次剩余计数。

setInterval(function(){
    // Assumes the container has the id of count
    // and the php script is called remaining.php
    $("#count").load("remaining.php")
}, 10000);

如果没有 jQuery,您将不得不做一些阅读,但这并不难

至于您嵌入同一问题的任何其他问题。您不应该将多个问题作为一个问题提出。每个问题都应显示您尝试过的内容、预期/实际行为、错误消息。这就是您的问题对其他人有用的方式,而不仅仅是您自己,这也是 Stack Overflow 的核心。目前你的问题是我不知道该怎么做,这不太适合 SO。

于 2013-04-16T23:47:13.240 回答
1

正如您所提到的,您应该使用 AJAX。

基本上,您会不时地调用一个页面并检查是否有新结果(如果它们存在)并将它们检索给用户。

您将要调用的页面是一个与您发布的页面类似的 PHP 文件,它将返回 AJAX 调用的结果。

调用后,结果将呈现给用户。

通常,在 AJAX GET 方法中更快,因为它不涉及处理 POST 字段,并且由于您只是获取信息,所以我会坚持下去。

这是您正在寻找的基本语法。我猜它有一些复杂但可以理解的名字。

<script>
setInterval(function(){check_new_stuff();}, 10000);

function check_new_stuff(){
  $.ajax({
    type: "GET",
    url: "url_with_your_php_code.php",
    dataType: 'html',
    data: {name_of_the_parameter_to_be_passed_in_get: value_of_the_parameter_to_be_passed_in_get},

    success: function(html){
             $("#div_to_have_its_html_replaced_with_the_result_from_php_code").html(html);
    },

    error: function(){
    },

    complete: function(){
    }
  });

  setTimeout(function(){check_new_stuff();}, 10000);
}
</script>

(您可以在此处阅读有关此内容的更多信息

关于你关于时间的问题,我没有看到它有问题。您只需要在数据库查询中添加字段并将时间值传递给它?

(如果你想要当前时间? - 试图猜测你的列名,因为你没有在你的解释中保持表命名相同)

$result = mysql_query("SELECT remaining FROM quantity WHERE salesdate=CURDATE() AND salestime=CURTIME()");

(具体时间,自己指定?)

$result = mysql_query("SELECT remaining FROM quantity WHERE salesdate=CURDATE() AND salestime='11:15:00'");
于 2013-04-16T23:38:28.487 回答