2013-09-23 20 views
-3

我需要在用戶在頁面上花費5秒後增加數據庫中的值。在頁面上增加5秒後的值

我在PHP文件的頂部有這個迄今爲止(無延遲):

$stmt = $cxn->prepare('UPDATE table SET column = column + 1 WHERE title = ?'); 
$stmt->bind_param('s', $title); 
$stmt->execute(); 

我將如何運行查詢的用戶花費在頁面上5秒鐘後?

+0

通過5秒後發送ajax請求...或使用隱藏的iframe和計數秒 –

回答

4

可以使用實現這一點 -

AJAXsetTimeout

function updateDb() { 
    $.ajax({ 
     url : 'update.php' 
    }); 

    setTimeout(updateDb, 5000); 
} 

updateDb(); 
+0

有沒有辦法做到這一點,而無需從另一個文件加載? – Burrows

+0

您必須發送請求到服務器才能執行任何數據庫更新。現在,您可以選擇「重新加載」整個頁面或發送「ajax」請求。 –

+0

不,客戶端(javascript)不能訪問數據庫,只有服務器(php),所以你必須打開一個php頁面才能更新,php代碼在頁面已經加載後才運行,只有當你加載它 – dajavax

2

創建一個新的PHP(假設它的命名dbupdate.php)只有文件:

<?php $stmt = $cxn->prepare('UPDATE table SET column = column + 1 WHERE title = ?'); 
$stmt->bind_param('s', $title); 
$stmt->execute(); ?> 

然後將此添加到您的原始文件中:

<script> 
function loadXMLDoc() 
{ 
var xmlhttp; 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.open("GET","dbupdate.php",true); 
xmlhttp.send(); 
setTimeout(loadXMLDoc,5000); 
} 
setTimeout(loadXMLDoc,5000); 
</script> 
+0

我不知道你在哪裏聲明$ title變量。你還需要在我提到的第一個文件中加上。 – dajavax