2017-09-26 52 views
1

我有一個使用複選框的表單,它從mysql數據庫獲取所有數據。所以可以有1到無限的複選框。從表單中獲取數組

我需要獲取表單提交時檢查的每一個。

它的工作原理是,如果它們全部被選中,但如果只檢查了一些,它將顯示沒有或只顯示其中一個。

這裏是我使用的顯示數據的複選框代碼:

while ($myrow = mysqli_fetch_array($result)){ 
echo<<<END 
<input type="checkbox" id="units" name="unit[$i]" value="$myrow[unit_id]" /> $myrow[unit_id]<br /> 
END; 
$i++; 
}//end while 

下面是當提交表單時,我使用的代碼:

$i=0; 
while($_POST["unit"][$i] != ""){ 
$unit = $_POST["unit"][$i]; 
$unit = $res2->real_escape_string($unit); 
echo $unit."<br />"; 
$i++; 
} // end while 

我相信問題是事實上,我有while($_POST["unit"[$1] != ""),如果一個盒子被選中,然後另一個2或3下來被檢查,它會看到第二個空的並停止。

如果是這樣的話,我需要幫助來弄清楚如何使它們全部通過並打印出被檢查過的。請記住,可能有任何地方從1到無限的選中,所以它不能是一個集數字,如while($i <= 50)

謝謝!

+1

此外,你有不良HTML,你不能有重複的ID字段。 (你可能只需刪除id =「units」) – Aknosis

回答

5

複選框只有在它們被選中時纔會被髮送。使用while,只要沒有設置由$_POST['unit'][$i]表示的複選框,循環就會停止,因此其餘的永遠不會被評估。如果密鑰是非常重要的

foreach($_POST["unit"] as $unit) { 
    echo $unit . "<br />"; 
} 

:你應該考慮使用foreach數組

foreach($_POST["unit"] as $key => $unit) { 
    echo $key . " is " . $unit . "<br />"; 
} 
+0

非常感謝,這很好。 5分鐘計算器讓我等待時,我會給予綠色檢查。 –

0

如果$我並不重要,你應該使用:在foreach循環

的foreach($ _REQUEST [ '單元'

名= 「單元[]」

和afther檢索值]作爲$單位)...