2012-12-06 50 views
0

我試圖做一個簡單的信用頁面,人們卸下信貸那麼多的信貸,並通過點擊一個按鈕,他們的名字旁邊會取消對信貸上按下一個按鈕PHP MySQL的AJAX

<table border="1"> 
<tr> 
    <td>Name</td><td>Massages left</td> 
</tr> 

<?php 

mysql_connect("localhost","dbuser","password"); 
mysql_select_db("db"); 

$command = "select pass_name, credit_left from pass;"; 
$result = mysql_query($command); 

//If there is, list that particular entry 
while ($data = mysql_fetch_object($result)) 
{ 
    print "<tr><td>" . $data->pass_name . "</td>" . 
      "<td>" . $data->credit_left . "</td></tr>\n" 
    // Button here that you click and make credit go down one; 
} 

?> 
</table> 

例如它會說Ben - 2credits - 點擊這裏刪除一個。

感謝

編輯

還好這裏是我有:
劇本

<script> 
function removeOneCredit(str) 

{ 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("credit").innerHTML=xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("GET","removeonecredit.php"+str,true); 
xmlhttp.send(); 
} 
</script> 

形式是:

while ($data = mysql_fetch_object($result)) { 
    print "<TR><TD>".$data->pass_name."</TD><TD id='credit'>".$data->credit_left."</TD><TD><form><input type='submit' value='- 1' onsubmit='removeOneCredit(?pass_id=".$data->pass_id."&credit_left=".$data->credit_left.")'></form></TD></TR>\n"; 

} 

的removeonecredit.php是

<html> 
<?php 

$pass_id = $_GET[pass_id]; 
$credit_left = $_GET[credit_left]-1; 
//change value 
mysql_connect("localhost","user","pw"); 
mysql_select_db("db"); 
$command = "update pass set credit_left='$credit_left' where pass_id='$pass_id';"; 
mysql_query($command); 
//now print value 
mysql_connect("localhost","user","pw"); 
mysql_select_db("db"); 
$command = "select credit_left from pass where pass_id='$pass_id';"; 
$result = mysql_query($command); 
$data = mysql_fetch_object($result); 
echo $data->credit_left; 



?> 

</html> 

如果我手動傳遞字符串在removeonecredit.php年底,它的工作原理,所以它必須是對事物的阿賈克斯部分...

+0

好了,什麼是你的問題?請明確點。 – hesson

+0

那麼你會使用什麼樣的代碼?我應該創建一個發送sql查詢以使「credit_left減1」並重新加載的表單嗎?如果是的話,我該如何將該查詢應用於該用戶(同時遍歷我的用戶) –

+0

我不明白爲什麼要以這種方式將pass_id和credit_left傳遞給AJAX函數。你不應該真的傳遞這樣的信息。你應該使用會話在你的removeonecredit.php文件中搞清楚。你現在這樣做的方式是非常危險和不安全的。無論如何,你可以暫時擺脫表單中的action屬性來測試你的AJAX函數。否則,它可能會覆蓋AJAX代碼。 – hesson

回答

-1

如果你想使用PHP進行改變,你將不得不製作表格並提交到同一頁面。 PHP在服務器上呈現代碼並將HTML發送給客戶端(計算機上的用戶)。如果您希望將其反映到數據庫中,則必須運行mysql查詢來更新該字段。然後一旦表單被提交,頁面的頂部就可以處理它,並且新的輸出將被加載。

另一種選擇是使用JavaScript。在這種情況下,不需要重新加載頁面。

<script> 
var count = 2; 
$(document).on('click', '#clickButton', function(){ 
    $('#countDiv').text(count--); 
}); 
</script> 

,並將HTML/PHP頁面將不得不與id="clickButton"一個按鈕,像<div id="countDiv"></div>

一個div我沒有測試了這一點。但我希望它能幫助你,或讓你朝着正確的方向前進!

+0

嗨,謝謝你,但JavaScript不會更新SQL數據庫中的數據呢? –

+0

不,它不會......它只會在頁面上改變它。要通過javascript更新數據庫,您必須向另一個頁面發出ajax請求,例如api.php,它將運行更新並返回成功或失敗。 – Federico

0

通過使用按鈕並使用JavaScript中的AJAX腳本來更新數據庫,而無需重新加載頁面。如果你不關心頁面重新加載,那麼你可以使用表單,但不必編寫AJAX腳本。要更新單個用戶的數據庫,您可以遍歷數據庫,並通過唯一標識符(如ID或用戶名)查找要查找的用戶:

例如,使用UPDATE MySQL命令:

UPDATE table_name 
SET credits_left='1' 
WHERE username='Bob' 

因此,這將只更新用戶名爲'Bob'的人的信用值。 我知道這不是非常具體,但如果您提出更具體的問題,我可能會更好地幫助您。

+0

非常感謝。我用pass_id設置了我的表,我想我們可以使用它? –

+0

所以它會是「更新通過設置credit_left其中pass_id =」。$ data-> pass_id「;」 –

+0

您的pass_id是否對每位用戶都是唯一的?如果是這樣,那麼是的,這將是適當的。確保你的pass_id是'主索引'(參見http://dev.mysql.com/doc/refman/5.0/en/constraint-primary-key.html)。如果您使用phpMyAdmin作爲數據庫,這非常簡單。如果你把它作爲主索引,MySQL保證它不會允許重複的pass_id。是的,該查詢應該可以工作。 – hesson