2010-11-25 128 views
1


我們有一個編輯窗體:我們使用可變數量的複選框來填充它(這一切都取決於我們想說的關於我們將要編輯的文章上有多少圖片) 。
所有複選框都默認爲「已檢查」,如果沒有任何反應,則相關數據(本例中爲我們的圖片)保持不變。
如果我們取消選中其中一個,我們實際上不希望將圖片保留在我們已編輯的帖子中,並將其從數據庫中刪除。未經檢查的複選框和隱藏的輸入問題

我知道選中複選框不得到發佈,並且我有一個變通:複選框前
地方權利與同一name..in這種方式與複選框的隱藏字段選中仍可發佈信息隱藏輸入。
但我有這樣的情況:

/*i'm querying the database to load all the article's data and I check if */ 
/* there's any picture so I build, with a while loop, an associated checkbox*/ 
<input type="checkbox" name="picture[]" value="$row['pic_id]"/>$row['pic_name'] 

當我提交我們的編輯表單我檢查是否有我們的陣列圖片內的任何數據,如果積極的我想從數據庫中刪除。 現在,如果我只是在每個複選框的頂部添加一個隱藏字段(所以名稱相同,值相同,因此它是我在下一個查詢中需要使用的值),所以我陷入了這個問題:
如何區分是否發佈的數據來自實際複選框(如果最終選中)或來自隱藏輸入?

再次感謝 盧卡

回答

1

在服務器端,你可以用下面的辦法:

$array_of_ids_to_delete=array_diff($array_with_all_ids, $posted_ids); 

$array_with_all_ids必須是已經存在的,因爲我猜你用它來輸出所有複選框。 $posted_ids代表你的圖片[]數組。

之後,您只需在$array_of_ids_to_delete上運行foreach並擺脫這些圖像。

3

你爲什麼不檢查它在服務器端?

你知道什麼是原始列表,你有你的新列表。那些不在新列表中,但在原始列表中的應該被刪除。

所以你不需要添加任何JavaScript黑客或隱藏的輸入。

+0

不錯的答案:+1 – 2010-11-25 08:50:48

相關問題