2012-07-06 180 views
1

我是PHP新手。所以我先道歉,如果我使用愚蠢的策略。我正在PHP網站上工作。 我的頁面從MySql中查詢數據,並在我的複選框中顯示在html表格中。用戶可以使用複選框和按鈕刪除任何數據。這一切都是使用JavaScript完成的。這裏是我的代碼上點擊保存按鈕的MySQL更新查詢的時間,以保存頁面所做的所有更改從HTML表格在php中獲取HTML表格數據

<script type="text/javascript"> 
function deleteRow() { 
     try { 
      var table = document.getElementById("Categories"); 
     var rowCount = table.rows.length; 



     for(var i=0; i<rowCount; i++) { 
      var row = table.rows[i]; 
      var chkbox = row.cells[0].childNodes[0]; 
      if(null != chkbox && true == chkbox.checked) { 
       table.deleteRow(i); 
       rowCount--; 
       i--; 
      } 


     } 
     }catch(e) { 
      alert(e); 
     } 
    } 

</script> 

刪除數據。 我知道這可以通過PHP完成。但這裏的問題是如何我可以從PHP中的數據從PHP運行查詢? 如果有人能指出我正確的方向,我會感謝你。

謝謝。

+0

如何使用DOM?看看這篇關於HTML DOM的教程:http://www.w3schools.com/htmldom/default.asp – pheromix 2012-07-06 11:19:52

+0

你的意思是你想發送當前DOM--即HTML頁面的當前活動狀態 - 作爲一個字符串到你的PHP腳本? – Utkanos 2012-07-06 11:21:59

+0

@utkanos是的,我試圖這樣做。想發送我的頁面的當前活狀態html。 – 2012-07-06 11:23:25

回答

2

你可以製作一個表格,你會有複選框,如:<input type="checkbox" name="m_Name[]" value="id_of_element">。當您在服務器端提交此表,你可以這樣做:

foreach ($_POST['m_Name'] as $id){ 
    $query = 'DELETE FROM table WHERE id='.$id; 
    //execute query with mysqli_*, PDO or mysql_*; NOTE: if you are not doing educational project don't use last one. 
} 

但更好的方法是:

$query = 'DELETE FROM table WHERE id IN ('; 
$in = ''; 

foreach ($_POST['m_Name'] as $id) 
    $in .= $id.','; 

$in = substr($in, 0, strlen($in)-1).')'; // removes extra "," at the end. 
$query .= $in; 
//run the query. 

最後一個西港島線只執行一個查詢,刪除記錄,以便它獲得更好的性能。但是,我創建查詢的方式對我來說似乎很難看,但我對有關改進的事情感到厭倦。 :)

+1

可能想要清理你的ID輸入...使用intval應該有所幫助。 – 2012-07-06 11:52:00

+0

@ $ _POST'中的@BrianAdkins被視爲字符串,並將它們與查詢字符串連接起來。爲什麼我需要使用'intval'?如果我使用準備好的語句並將這些值作爲整數綁定,那麼您會是對的,但爲此目的,它將是額外的IMO。 – Leri 2012-07-06 11:57:31

+0

您的示例代碼當前容易受到SQL注入的攻擊...例如,某人提交了一個ID設置爲單引號而不是數字的POST。 – 2012-07-06 12:02:35