サンプル・プログラムの実行例
サンプル・プログラム checked2.php を実行してみてほしい。
チェックボタンをチェックして「実行」ボタンを押下する。すると、画面表示は全く変わらないが、タイトル右横の「回数」は増えている。とくに、チェックボタンのチェック箇所を複数にして試してみていただきたい。
じつは、きちんと画面遷移は行われている。そして、チェックボタンの状態も引き継がれているのである。
その仕組みを説明しよう――。
チェックボタンをチェックして「実行」ボタンを押下する。すると、画面表示は全く変わらないが、タイトル右横の「回数」は増えている。とくに、チェックボタンのチェック箇所を複数にして試してみていただきたい。
じつは、きちんと画面遷移は行われている。そして、チェックボタンの状態も引き継がれているのである。
その仕組みを説明しよう――。
サンプル・プログラム
checked2.php | サンプル・プログラム本体。 |
解説:checked属性の付け方
141: //処理選択チェックボックス
142: $str_check = '';
143: $i = 1;
144: foreach ($RailWays as $key=>$val) {
145: $str_check .= "<input type=\"checkbox\" id=\"railway[{$i}]\" name=\"railway[{$i}]\" value=\"{$key}\" {$val} />{$key}<br />\n";
146: $i++;
147: }
チェックボックスは、HTMLフォームに name="railway[I]" として配置している。これは、「PHPでチェックボックスを配列のように扱う」で述べたように、PHPにはチェックボックスを配列のようにして扱う機能があることを利用している。
選択されたチェックボックスの value の値は、POST変数 $_POST['railway'][I] に格納される。そこで、$_POST['railway'][I] の値があるチェックボックスに checked 属性を付加すればいい。
checked 属性を付加するかどうかの判断は、「PHPでラジオボタンの状態を引き継ぐ」と同様に連想配列を使って行う。
選択されたチェックボックスの value の値は、POST変数 $_POST['railway'][I] に格納される。そこで、$_POST['railway'][I] の値があるチェックボックスに checked 属性を付加すればいい。
checked 属性を付加するかどうかの判断は、「PHPでラジオボタンの状態を引き継ぐ」と同様に連想配列を使って行う。
解説:すべてチェック
189: } else if (isset($_POST['all'])) {
190: foreach ($RailWays as $key=>$val) {
191: $RailWays[$key] = 'checked';
192: }
おまけ機能として、チェックボックスすべてにチェックを付けるルーチンを用意した。
これはクライアントサイド(JavaScript)でも実現できる。
これはクライアントサイド(JavaScript)でも実現できる。
参考サイト
- PHPでラジオボタンの状態を引き継ぐ(ぱふぅ家のホームページ)
- PHPでチェックボックスを配列のように扱う(ぱふぅ家のホームページ)
(この項おわり)
ラジオボタンとは異なり、複数の状態を引き継ぐ必要がある点に注意が必要だ。
(2021年4月11日)PHP8対応,リファラ・チェック追加.