2010-04-23 18 views
2

我正在嘗試創建一個用於從MySQL表中刪除項目的小型Web應用程序。它只是顯示一個HTML表格,併爲每個項目的按鈕[delete]項目:帶有多個提交選項的HTML表單

item_1 [delete] 
item_2 [delete] 
... 
item_N [delete] 

要做到這一點,我動態生成通過PHP表成HTML格式。這個表格顯然是N[delete] -buttons。表單應該使用POST方法來傳輸數據。

對於刪除,我想將相應項目的ID(主表中的主鍵)提交給正在執行的php skript。所以我介紹hidden領域(這些領域有name='ID'存儲相應項目的ID

不過,按下任意[delete]時,它似乎提交永遠只是最後ID(即最後ID的價值隱藏字段)

是否有任何方法可以提交相應項目的ID字段而不使用多個表單?或者是否可以使用一個提交按鈕提交多個表單的數據?或者我應該甚至選擇任何完全不同的方式?

爲什麼我只想用一種形式來完成這一點,就是有一些「全局」參數不能放在每個項目旁邊,而只是放在整個表格中。

回答

5
<input type="submit" name="delete[1]" value="delete"> 

if (isset($_POST['delete'])) $id=key($_POST['delete']); 
+0

+1你打敗了我 – 2010-04-23 12:11:07

3

它似乎總是提交剛剛過去的ID

它提交所有的人,但由於名稱不[]結束,PHP丟棄所有由最後。

有沒有什麼方法可以在不使用多個表單的情況下提交相應項目的ID字段?

不,至少不是沒有一些不幸的JavaScript。所有(未禁用的)隱藏輸入(包含名稱和值)都會成功。您不能根據與點擊的輸入元素的接近程度來進行限制。

如果我正確理解你的目標,你有兩個主要選項。

  1. 將每行的形式(在細胞與刪除按鈕)
  2. Encode the id value into the name of the submit button
1

你可以擺脫隱藏字段,並命名您的提交按鈕這樣的:

<input type="submit" name="delete[1]" /> 
<input type="submit" name="delete[2]" /> 
<input type="submit" name="delete[3]" /> 

然後

<?php 

if (isset($_POST['delete'])) { 
    $toDeleteId = key($_POST['delete']); 
}