お問い合わせフォームなどで、チェックボックスを使う時は、複数設置することも多いです。
ラジオボタンと違って、複数選択できるものです。
これをPHPで取得するときに注意しないと、複数選択していても最後の一つしか取得できなくなってしまいます。
<form method="post" action="kekka.php"> <label><input type="checkbox" name="color" value="red">赤</label> <label><input type="checkbox" name="color" value="blue">青</label> <label><input type="checkbox" name="color" value="yellow">黄</label> <input type="submit" value="送信"> </form>
$color=$_POST['color']; echo $color;
この状態で出力すると、全部選択した場合、最後のパラメータの「yellow」のみが出力されます。
では、どう書けばよいのか?
2つのパターンを紹介。
パターン1
<form method="post" action="kekka.php"> <label><input type="checkbox" name="color1" value="red">赤</label> <label><input type="checkbox" name="color2" value="blue">青</label> <label><input type="checkbox" name="color3" value="yellow">黄</label> <input type="submit" value="送信"> </form>
$color1=$_POST['color1']; $color2=$_POST['color2']; $color3=$_POST['color3']; echo $color1.",".$color2.",".$color3;
name属性を3種類にしてしまうやり方チェックボックスの数が少なければ、これでもOK.
パターン2
<form method="post" action="kekka.php"> <label><input type="checkbox" name="color[]" value="red">赤</label> <label><input type="checkbox" name="color[]" value="blue">青</label> <label><input type="checkbox" name="color[]" value="yellow">黄</label> <input type="submit" value="送信"> </form>
$color=$_POST['color']; foreach ($color as $value){ $c .=$value.","; } echo $c;
name属性のパラメータを複数格納できるようにする。
こちらの方がごちゃごちゃせず、すっきりする。
コメント