2013-08-22 66 views
0

我有一個普通的html表格,其中每個單元格都包含一個名稱。我爲這些單元格中的每一個都添加了一個函數,如果它是白色的而其他方式則將單元格背景顏色變爲綠色。然而,我還想更新一個mySql數據庫,當單擊一個單元格時,但我似乎無法找到一個好的方法來做到這一點,而無需重新加載頁面(我不希望這樣做)或使用JavaScript連接到服務器(這似乎是一個非常糟糕的做法)。該頁面此時已被加載。有人有什麼好的建議嗎?在javascript函數中更新sql

<script type="text/javascript"> 
var tbl = document.getElementById("table"); 
     if (tbl != null) { 
      for (var i = 1; i < tbl.rows.length; i++) { 
       for (var j = 0; j < tbl.rows[i].cells.length; j++) 
        tbl.rows[i].cells[j].onclick = function() { getval(this); }; 
      } 
     } 

     function getval(cel) { 
      if(cel.style.backgroundColor == "green") 
      { 
       cel.style.backgroundColor = "white"; 

       // Here I would like to update my datebase with mySql 
       // query(UPDATE team SET attended=0 WHERE name = cel.innterText) 
       // (name associated with the cell) 

      } 
      else 
      { 
       cel.style.backgroundColor = "green"; 
       // Here I would like to update my datebase with mySql 
       // query(UPDATE team SET attended=1 WHERE name = cel.innterText) 
       // (name associated with the cell) 
      } 
     } 
</script> 
+0

谷歌這個:'Ajax' – Itay

+2

@NielsSønderbæk你可能想使用Ajax與JQuery代替。性能方面,JQuery對Ajax更好。希望能幫助到你。從MySQL搜索Ajax和JQuery Retreive數據。 –

回答

2

上的鏈接從廣義上講,你需要把你的應用程序的一部分轉變爲服務,並有將其來電通過來自頁面的異步HTTP請求(這屬於「AJAX」面額)創建的。

該服務可以寫成服務器上的一個額外的PHP腳本,它可能不一定會返回一個HTML文檔,但可能是XML或JSON(後者可能更受歡迎),這將由您的JavaScript處理如果需要,可以在瀏覽器中使用腳本進一步操作(例如,只有在此請求成功後纔將背景變爲白色)。

正是這個PHP腳本應該處理SQL查詢。

作爲一般指導原則,不要在客戶端準備或處理任何SQL(在您的JavaScript腳本中),並確保您使用的是prepared statements when running your SQL queries。 (我只是說,因爲你明顯是新手,你不可避免地會在這裏或各種博客上找到代碼片斷,人們只是通過在查詢字符串中使用變量,將變量放入他們的SQL語句中。這是非常不好的做法)

編輯

我真的需要沒有進一步去比W3Schools to have a bad example of MySQL query that is vulnerable to SQL injection(這個問題是在$sql="SELECT * FROM user WHERE id = '".$q."'";)。不要使用這個例子。我會避免W3Schools,看到http://www.w3fools.com/

+0

你能否提供一個最小的工作示例? –

1

SQL是服務器端,而不是客戶端。您需要使用AJAX將數據發送到服務器,然後服務器將使用SQL進行保存。

0

必須使用AJAX,檢查此鏈接爲一個教程
http://www.w3schools.com/ajax/
導航通過左邊的菜單

+0

你的想法正確,但請不要推薦W3School。這是一個非常糟糕的網站。 – Bruno

+0

他是ajax的初學者,w3schools是邁出第一步的完美之地!我想知道你的downvote! –

+0

這是W3Schools的問題,請參閱我對我的回答的評論。它從一開始就清楚地給你帶來壞習慣。不需要用你自己的downvote報復。如果您找到比W3School更好的參考資料,我會刪除它。 – Bruno