2016-05-24 22 views
-1

當用戶點擊「添加到購物車」按鈕時,我想遞減一個值(庫存產品的數量),並在一段時間後(例如5分鐘)將該值恢復到初始值? P.S:即時通訊使用PHP的jQuery和AJAX。如何修改數據庫(mysql)並在5分鐘後恢復它?

+0

將該值保存在文件(或差異表)上並使用cronjob將其恢復。 –

+0

抱歉,我看不到你的意思,你能更具體嗎? (一個例子會很好),謝謝! –

+0

'UPDATE表設置col_x = col_x -1 WHERE col_y ='z'和日期

回答

0

您可以使用PDO(與MySQL的php通信)。一個這樣的例子是與準備好的聲明減小該值在數據庫中,以提高性能(和安全當然):

$sql = "UPDATE myTable SET number_of_products = number_of_products - :quantity WHERE product_id = :id"; 
$stmt = $conn->prepare($sql); 
$stmt->bindParam(':quantity', $quantity); 
$stmt->bindParam(':id', $id); 
$stmt->execute(); 

然後,因爲你早已準備好的聲明中,你可以如下回復此值(而無需重新申報整個SQL語句)

$stmt->bindParam(':quantity', -$quantity); 
$stmt->bindParam(':id', $id); 
$stmt->execute(); 

如果你想第二個腳本發生5分鐘後,你可以有實現的排隊系統例如延遲5分鐘。還有一些函數可以用來睡5分鐘,但是如果這個函數和用戶在同一頁面上運行(除非你計劃在單獨的腳本中使用它),這將是非常不現實的,因爲用戶會從字面上在同一頁面上等待5分鐘。

+0

這是一個不錯的主意,但整個等待的部分並不那麼實際,實際上我願意讓這個「5分鐘」在後臺進行,而客戶仍然在我的網站上,做他想做的任何事情,並且一次他去那裏超過5分鐘,價值會改變... –

+0

@TarikKaoukab是的,正如我所說,有人在等待是不實際的,這就是爲什麼排隊系統可能是實用的。我不確定你將多少時間和精力投入到開發項目中,因此我只是向你們推薦一些人們實施「等待」計劃的方式。關於代碼,由於它的速度有多快,所提供的SQL幾乎是現在的標準。哦,如果我的答案適用於您,請接受它的綠色複選標記,以便將來的用戶知道它適合您。 – Webeng