Memo plus Alpha

メモにプラスアルファを加えて価値ある情報に。

PHPでチェックボックス(checkbox)の値を受け取る

【ポイント】チェックボックスは配列

 

チェックボックスは複数選択可能な入力であるので、注意が必要です。PHPなど、CGIで入力を受け取るとき、値が0のときもあり、1のときもあり、それ以上のときもあるので、それに対応しなければなりません。

 

どのように対応するか、というと、チェックボックスを配列として扱うことです。例えば、checkboxという名前の配列があるとすると、この1つ目にチェックされたチェックボックスのvalueの1つ目が、2つ目にチェックされたチェックボックスのvalueの2つ目が入る、ということです。

 

次の例では、checkboxという配列に値を格納しています。

 

<form method="POST" action="checkbox.php">

<INPUT type="checkbox" id="A"  name="checkbox" value="A">

<LABEL for="comma">Aを選ぶ</LABEL>

<INPUT type="checkbox" id="B"  name="checkbox[]" value="B">

<LABEL for="colon">Bを選ぶ</LABEL>

※labelを設定することで文字列を選んでもチェックできるようになります。

 

両方チェックされていれば、checkbox[0]のvalueはA、checkbox[1]のvalueはBとなります。

 

Aだけチェックされていたら、checkbox[0]はA、checkbox[1]は空っぽです。

 

Bだけチェックされていたら、checkbox[0]はB、checkbox[1]は空っぽです。

 

このとき、必ず0番目から値が埋められていくことに注意してください。つまり、checkbox[0]には、常にはじめにチェックされたもののvalueが格納されるということです(配列番号がチェックボックスの順番と対応しているということではありません)。

 

値の受け取りは、次のようにやはり配列を指定して受け取ります。

<?php

//値の受け取り

$checkbox1 = $_POST["checkbox"][0];

$checkbox2 = $_POST["checkbox"][1]; 

>

この場合、この後に条件分岐をするとすれば、(1)両方チェックされている場合、(2)Aだけチェックされている場合、(3)Bだけチェックされている場合の3つがあります。

 

(1)はif ($checkbox1=="A" AND $checkbox2=="B")

(2)はelseif ($checkbox1=="A") 

(3)はeseif(($checkbox1=="B") 

 

となります。