2011-04-22 110 views
4

我寫,在PHP中的第一次,一個腳本來處理提交的表單包含複選框。PHP:複選框和名稱問題

大家知道,複選框,通過使用相同的名稱屬性進行分組,並且當多個值發生,$ _ POST [「some_name」]應存儲這些在陣列中。

我測試過,但不是預期的陣列我得到了一個單值 - 即最後一次檢查項目。

在這一點上,有些不解,我看一些文檔,發現與PHP的複選框名稱應與[]結束。是這樣嗎? HTML表單和處理它的腳本之間預計會存在什麼瘋狂的關係?假設我無法訪問HTML字段名稱?假設,因爲它是我的情況,我有充分的理由不改變我的命名方案只是一些模糊的廢話。現在

,看來至少存在一個解決問題:PHP: Retrieving value of checkboxes when name doesn't have array

我想知道如果有一個非常簡單的方法,沒有那些瘋狂的支架做的,順便說一下,您有什麼看法點?我唯一感到震驚的是?

編輯:好的,我當然可以解決這個問題,但我希望提出一些關於HTML和PHP之間「不分離的問題」的一些(小的)基本點。顯然,這不是PHP應該如何編寫HTML代碼的業務。

+1

我只是碰到了同樣的問題,有完全相同的想法!爲什麼html表單名稱要依賴於php?什麼,如果和你一樣,我有過的形式,並沒有控制創建它做到了「正常」的方式(不包括[])的人。我必須說我不明白爲什麼我不得不將[]添加到我的HTML中,因爲HTML和PHP應該是彼此獨立的。你有沒有找到一個正常的解決方案 - 不是以PHP特定的方式創建你的表單? – Karen 2011-04-29 01:31:39

+0

不幸的是,沒有。我最終添加了這些括號。而且我絕對不會愛上PHP! – 2011-05-02 09:46:53

回答

0

在HTML代碼中的複選框:

name="mycheckboxname[]"

+1

準確地說,我的觀點。我想盡可能避免愚蠢的行爲。 – 2011-04-22 09:39:20

+1

這是一個愚蠢的行爲?你能澄清你的意思嗎? – 2011-04-22 10:03:39

+0

當然沒有濫用意味着。我希望我的這個問題的附錄能夠澄清一點。 – 2011-04-22 10:10:27

0

什麼是你很好的理由在您的命名方案不包含[]?我不認爲這特別令人震驚。就PHP而言,也許你實際上只希望從具有該特定名稱的最後一個元素中獲得值。

有一些替代方法,例如您在問題中包含的方法,或者使用一些javascript欺騙手段獲取值,但我認爲您不會發現任何方法比簡單地將方括號添加到複選框的名稱更簡單。

0

你應該嘗試

<input type="checkbox" name="mycheckbox[]" value="Male" /> 
<input type="checkbox" name="mycheckbox[]" value="Female" /> 

In php side, 

$myCheckBoxCollection = $_REQUEST['mycheckbox'];