2012-03-09 89 views
0

我需要傳遞值和其他一些值,具體取決於選中的複選框。我發現貼一對夫婦在這裏其他時間依賴於HTML,這和複選框前通過一個隱藏的價值:在PHP將複選框的值傳遞給數組,無論它是否被選中

<input type="hidden" value="0" name="B_1" /> 
<input type="checkbox" value="1" name="B_1" /> 
<input type="hidden" value="0" name="B_2" /> 
<input type="checkbox" value="1" name="B_2" /> 
<input type="hidden" value="0" name="B_3" /> 
<input type="checkbox" value="1" name="B_3" /> 

然後我根據這些複選框使得不同的聯想:

$b = "Buyers"; 
$bv1 = "Not a web item"; 
$bv2 = "Need sample"; 
$bv3 = "Sample not available"; 

if ($_POST['B_1']) { $b1 = array($b , $bv1 , $_POST['B_1']); } 
if ($_POST['B_2']) { $b2 = array($b , $bv2 , $_POST['B_2']); } 
if ($_POST['B_3']) { $b3 = array($b , $bv3 , $_POST['B_3']); } 

當我使用print_r我只看到陣列爲這些框我檢查:

Array ([0] => Buyers [1] => Not a web item [2] => 1) 

我希望看到所有的陣列返回CHEC的狀態如何, KBOX。

Array ([0] => Buyers [1] => Not a web item [2] => 0) 
Array ([0] => Buyers [1] => Need sample [2] => 1) 
Array ([0] => Buyers [1] => Sample not available [2] => 0) 

回答

2

我沒有看到在所有使用這裏的隱藏字段(也,他們不應該有相同的名稱,作爲其他元素,除非該字段是一個數組)。如果你不使用他們,我建議你改變你的HTML:

<input type="checkbox" value="B_1" name="B_1" /> 
<input type="checkbox" value="B_2" name="B_2" /> 
<input type="checkbox" value="B_3" name="B_3" /> 

您可以將您的複選框元素需要的任何值value屬性。

如果你需要所有的陣列,不管箱是否被選中,if應刪除:

$b1 = array($b , $bv1 , $_POST['B_1']); 
$b2 = array($b , $bv2 , $_POST['B_2']); 
$b3 = array($b , $bv3 , $_POST['B_3']); 
+0

啊感謝澄清。我正在使用隱藏,因爲如果複選框未選中,我想要傳遞0的值。如果我不這樣做,沒有什麼是'$ _POST''返回的[2] =>'我已經讀了幾個地方,這是解決方案,但如果你有另一個想法,我很想聽到它。 – Zac 2012-03-09 03:43:35

+0

你可以通過執行'isset($ _ POST ['B_1'])'(etc)來確定複選框是否被選中,並確定你的值/邏輯基於 – chrisn 2012-03-09 03:54:52

+0

ok,謝謝Chris。還有,爲什麼這樣做更好? – Zac 2012-03-09 03:57:41