2017-09-26 5 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] != "")を持っていて、1つのボックスがチェックされ、次にもう1つ2または3のダウンがチェックされている場合、それは第2のものを空にして停止します。

そのような場合、私はそれがそれらすべてを介して実行してチェックしたものをプリントアウトするようにする方法を把握する助けを必要としています。それはwhile($i <= 50)

ありがとうのように、設定された数字にすることはできませんので、チェックを無制限にどこでも1からがあるかもしれません、覚えておいてください!

+1

また、あなたが重複したIDフィールドを持つことができない、悪いHTMLを持っています。 (おそらく単にid = "units"を削除することができます) – Aknosis

答えて

5

チェックボックスにのみ送信されます。 whileを指定すると、$_POST['unit'][$i]というチェックボックスが設定されないとループが停止し、残りの部分は評価されません。あなたは配列のためforeachを使用して検討する必要があります。

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

キーが重要な場合:

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

ありがとう、それは完全に機能しました。私は5分のstackoverflow私が待っているときに緑のチェックを与えるだろう笑笑い。 –

0

$私は重要でない場合は、使用する必要があります。

名= "単位は[]"

とafther foreachループ

foreachの($ _REQUEST [ 'ユニット' 内の値を取得それらがチェックされたとき])$ユニットとして....

関連する問題