サンプル・プログラム
サンプル・プログラム checked2.php を実行してみてほしい。
チェックボタンをチェックして「実行」ボタンを押下する。すると、画面表示は全く変わらないが、タイトル右横の「回数」は増えている。とくに、チェックボタンのチェック箇所を複数にして試してみていただきたい。
じつは、きちんと画面遷移は行われている。そして、チェックボタンの状態も引き継がれているのである。
その仕組みを説明しよう――。
チェックボタンをチェックして「実行」ボタンを押下する。すると、画面表示は全く変わらないが、タイトル右横の「回数」は増えている。とくに、チェックボタンのチェック箇所を複数にして試してみていただきたい。
じつは、きちんと画面遷移は行われている。そして、チェックボタンの状態も引き継がれているのである。
その仕組みを説明しよう――。
サンプル・プログラムの解説:checked属性の付け方
0046: //checkedを設定する
0047: } else if (isset($_POST['railway'])) {
0048: foreach ($_POST['railway'] as $val) {
0049: $val = mb_convert_encoding($val, $InternalEncoding, 'auto');
0050: $RailWays[$val] = 'checked';
0051: }
0052: }
チェックボックスは、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 でラジオボタンの状態を引き継ぐ」と同様に連想配列を使って行う。
サンプル・プログラムの解説:すべてチェック
0040: //全てチェック
0041: } else if (isset($_POST['all'])) {
0042: foreach ($RailWays as $key=>$val) {
0043: $RailWays[$key] = 'checked';
0044: }
おまけ機能として、チェックボックスすべてにチェックを付けるルーチンを用意した。
これはクライアントサイド(JavaScript)でも実現できる。

これはクライアントサイド(JavaScript)でも実現できる。

参考サイト
- PHP でラジオボタンの状態を引き継ぐ(ぱふぅ家のホームページ)
- PHP でチェックボックスを配列のように扱う(ぱふぅ家のホームページ)
(この項おわり)
ラジオボタンとは異なり、複数の状態を引き継ぐ必要がある点に注意が必要だ。