更新“剩余数量”而不刷新网站

时间:2013-04-16 23:01:06

标签: php html mysql ajax

我有一个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);
?>

提前感谢您的帮助。非常感谢。

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分: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>

(你可以read more about this here

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

(如果您想要当前时间? - 尝试猜测您的列名称,因为您不会在整个说明中保持表格命名相同)

$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'");