2013-04-16 82 views
0

我有一個HTML網站,使用PHP代碼查詢MySQL數據庫的網頁。該表包含3列(日期,時間,剩餘)。根據當前日期和時間,我希望HTML頁面能夠返回並顯示「剩餘」列中的相應值。更新「數量剩餘」,而不刷新網站

訣竅是我想這個值自動更新(AJAX?),而用戶不必刷新頁面或單擊按鈕。

我到目前爲止的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); 
?> 

感謝您的幫助:

PHP代碼我想通了,到目前爲止

quantitytest_config.php只包含主機名/用戶名/密碼注)。非常感激。

+3

最簡單的方法就是學習AJAX :-) – raidenace

回答

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來說並不是很合適。

+0

謝謝胡安!我試了一下,它的功能就像一個魅力。我對多個問題表示歉意,不遵循其他建議。我從現在開始一定會這樣做。 – Zander

+0

@Zander無需道歉,歡迎來到堆棧溢出,很高興它的工作。 –

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

感謝Ivo,並且很抱歉讓你猜測列名(你做得對!)。 所以我的表格由'salesdate','salestime'和'剩餘'組成。我希望查詢匹配今天的日期和表格中的最後一個有效時間。不幸的是,第一個建議是: 只會提供一個結果,如果當前時間與'任何'數值完全相同, salestime'欄目,否則它不會返回任何內容。不幸的是,我在MySQL文檔中找不到任何解決方案。 – Zander

+0

你是什麼意思的有效時間?某行的行已滿?如果是這樣,請嘗試執行此操作:$ result = mysql_query(「SELECT剩餘的FROM數量WHERE salesdate = CURDATE()AND salestime!='00:00:00'」); –

+0

有效時間我的意思是:我的表格將預填充數據。因此,我們假設該表格有10個填充的日期,時間和剩餘行數,並且這些值可能包含過去和未來的日期/時間。我希望查詢從僅有一行返回「剩餘」值 - 從最接近今天的日期和當前時間的行開始,但不是將來的時間。 – Zander