サンプル・プログラム
解説:前処理
まず、質問項目を配列変数 $questions に代入しておく。
プログラムは、チェックボックスを選択する指定する部分と、選択肢を一覧表示する部分の2つに分かれる。例によって、変数 $_POST に渡された内容によって、2つのプログラムを切り替えることができるようにしてある。
プログラムは、チェックボックスを選択する指定する部分と、選択肢を一覧表示する部分の2つに分かれる。例によって、変数 $_POST に渡された内容によって、2つのプログラムを切り替えることができるようにしてある。
49: //選択肢
50: $questions = array('PHP', 'Ruby', 'Perl', 'Java',
51: 'JavaScript', 'VisualBasic', 'VisualC++', 'VisualC#');
52:
解説:チェックボックスの表示
チェックボックスの表示だが、配列変数 $questions の内容を逐次表示するだけである。
ここで注意してほしいのは、HTML の <input type="checkbox"> タグ の name 属性に item[*] という配列変数のような文字列を設定していることである。これを行うことで、PHPから配列変数として扱えるようになる。
ここで注意してほしいのは、HTML の <input type="checkbox"> タグ の name 属性に item[*] という配列変数のような文字列を設定していることである。これを行うことで、PHPから配列変数として扱えるようになる。
80: $i = 0;
81: foreach ($questions as $val) {
82: echo <<< EOT
83: <input type="checkbox" name="items[{$i}]" value="{$val}" />
84: {$val}<br />
85:
86: EOT;
87: $i++;
88: }
サンプル・プログラムの解説:選択結果の表示
次に、選択結果の表示である。
チェックボックスの内容は、POST メソッド で送信され、配列変数 $_POST["items"] に格納されている。これは、送出側の name 属性 を item[*] にしたおかげである。
あとは、foreach 構文 を使い、わずか1行で選択肢の内容を取り出すことができる。
チェックボックスの内容は、POST メソッド で送信され、配列変数 $_POST["items"] に格納されている。これは、送出側の name 属性 を item[*] にしたおかげである。
あとは、foreach 構文 を使い、わずか1行で選択肢の内容を取り出すことができる。
103: foreach ($items as $val) echo htmlspecialchars($val) . "<br />\n";
104:
このテクニックはいろいろな応用がきく。ぜひ覚えておいていただきたい。
(この項おわり)
PHPには、複数選択されたチェックボックスを配列として扱う機能がある。この機能を利用することで、プログラムを簡素化することができる。
(2021年4月4日)PHP8対応,リファラチェック追加