- ベストアンサー
メールフォーム チェックボックス
以前にも何度かご質問させていただいたのですが、できなかったためもう一度ご質問させていただきました。 入力フォームで各項目を入力してから確認画面、送信となるフォームです。 入力フォームにて各項目を入力し、確認画面が表示され、確認画面にて入力等の間違えや、入力をし忘れた等などがあった場合「戻る」で、入力画面に戻るようにしています。 (必須項目が記入されていなかった場合は自動で入力画面に戻るように設定。) 入力画面にてチェックボックス(選択1,選択2にチェックをしたとする。)を選択し、確認画面が表示されたあと入力画面に戻るとチェックボックスが選択されていたはずなのにチェックがはずれているという現象が起きています。 入力画面→確認画面→入力画面ページが表示されてもセレクトメニューの値はそのままでなおかつチェックボックスの値もそのまま表示されているようにしたいです。 この現象を直すにはどのように記述したらよろしいでしょうか? また、チェックを必須項目にさせてチェックがされなかった場合のエラー出力方法の記述も教えていただけないでしょうか? 下記は入力フォームの記述になります。 入力画面 <?php $position_arrays = array('選択1','選択2','選択3','選択4','選択5'); for ($i = 0; $i < 5; $i++) { $checked = "" ; $checked = ($_SESSION["position"][$i] == $position_arrays,[$i]) ? "checked":""; print '<input type="checkbox" name="position['.$i.']" value="'.$position_arrays[$i]. '" '.$checked.'>' . $position_arrays[$i]. "\n"; } ?> 確認画面 $position = isset($_POST['position']) ? implode(" , " , $_POST['position']) : NULL; ・ ・ ・ $_SESSION['position'] = $position; とても説明がしずらいためわかりにくいとこがあると思いますが、宜しくお願いします。 また、何か足りない記述等が御座いましたら、お申しでください。 他のテキストボックスなどは正常に動作しております。 (入力画面→確認画面→入力画面の動作をおこなってもテキストボックス内に表示されています。) 宜しくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 checkedを出力する条件を以下のようにすれば良いと思います。 <?php $position_arrays = array ( '選択1', '選択2', '選択3', '選択4', '選択5'); $position = explode (',', $_SESSION['position'] ); $count = 0: for ($i = 0; $i < 5; $i++) { $checked = ""; if ( $position_arrays[$i] == $position[$count] ) { $checked = " checked"; $count++; } print '<input type="checkbox" name="position['.$i.']".$checked.'>' . $position_arrays[$i]."\n"; } ?>
その他の回答 (2)
- yuu_x
- ベストアンサー率52% (106/202)
var_dump などで各変数に何が入っているか確認してください。
- yuu_x
- ベストアンサー率52% (106/202)
implode を元に戻してないだけじゃないですか? <?php $position_arrays = array('選択1','選択2','選択3','選択4','選択5'); $position = explode(' , ', $_SESSION['position']); for ($i = 0; $i < 5; $i++) { $checked = $position[$i] ? " checked":""; print '<input type="checkbox" name="position['.$i.']".$checked.'>' . $position_arrays[$i]."\n"; } ?>
補足
有難う御座います。 上記の内容で試したところ、選択4と選択5を選ぶと確認画面では選択4と選択5が表示されるのですが、入力画面に戻ると選択1と選択2のところにチェックが入ってしまいます。 入力画面に戻った場合でも選択4と選択5にチェックされている状態にするにはどうしたらよろしいでしょうか? よろしくお願いします。
補足
上記の内容でできました。 本当有難う御座います。