• 締切済み

メールフォーム チェックボックス

以前もご質問させていただいたのですが、できなかったためもう一度ご質問させていただきました。 入力フォームで各項目を入力してから確認画面、送信となるフォームです。 入力フォームにて各項目を入力し、確認画面が表示され、確認画面にて入力等の間違えや、入力をし忘れた等などがあった場合「戻る」で、入力画面に戻るようにしています。 (必須項目が記入されていなかった場合は自動で入力画面に戻るように設定。) 入力画面にてチェックボックス(選択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; とても説明がしずらいためわかりにくいとこがあると思いますが、宜しくお願いします。 また、何か足りない記述等が御座いましたら、お申しでください。 他のテキストボックスなどは正常に動作しております。 (入力画面→確認画面→入力画面の動作をおこなってもテキストボックス内に表示されています。) 宜しくお願いいたします。

みんなの回答

  • vancunt
  • ベストアンサー率33% (2/6)
回答No.2

フォームから配列を渡すときの記述方法ですが、 name="position['.$i.']" ではなく name="position[]" ではないでしょうか。 参考:http://jaco.dotstyle.net/?p=20 確認画面で送信されたデータがどんなものか確認してください。 var_dump($_POST);

h-h13
質問者

補足

有難う御座います。 name="position['.$i.']"ではなくname="position[]"で試してみましたが、変わりませんでした。 また、チェックボックスが複数選べるのですが、表示されるのはひとつだけでした。 また、参考サイトがみれませんでした。

  • vancunt
  • ベストアンサー率33% (2/6)
回答No.1

入力画面 name="position['.$i.']" 確認画面 $_POST['position'] を確認してください。

h-h13
質問者

補足

ご回答有難う御座います。 初心者のためわからないので、理由をお聞きしてもよろしいでしょうか?