• 締切済み

チェックボックス エラー表示とチェック表示

現在フォームを作成しております。 入力フォームで各項目を入力してから確認画面、送信となるフォームです。 入力フォームにて各項目を入力し、確認画面が表示され、確認画面にて入力等の間違えや、入力をし忘れた等などがあった場合「戻る」で、入力画面に戻るようにしています。 (必須項目が記入されていなかった場合は自動で入力画面に戻るように設定。) 入力画面にてチェックボックス(MF,FWにチェックをしたとする。)を選択し、確認画面が表示されたあと入力画面に戻るとチェックボックスが選択されていたはずなのにチェックがはずれているという現象が起きています。 入力画面→確認画面→入力画面ページが表示されてもセレクトメニューの値はそのままでなおかつチェックボックスの値もそのまま表示されているようにしたいです。 この現象を直すにはどのように記述したらよろしいでしょうか? また、チェックを必須項目にさせてチェックがされなかった場合のエラー出力方法の記述も教えていただけないでしょうか? 下記は入力フォームの記述になります。 <?php $position_arrays = array('選択1','選択2','選択3','選択4','選択5'); for ($i = 0; $i < 5; $i++) { $checked = "" ; $checked = ($_SESSION["position"][$i] == sprintf($position_arrays,$i)) ? "checked":""; print '<input type="checkbox" name="position['.$i.']" value="'. sprintf($position_arrays[$i]) . '" '.$checked.'>' . sprintf($position_arrays[$i]) . "\n"; } ?> とても説明がしずらいためわかりにくいとこがあると思いますが、宜しくお願いします。 また、何か足りない記述等が御座いましたら、お申しでください。 他のテキストボックスなどは正常に動作しております。 (入力画面→確認画面→入力画面の動作をおこなってもテキストボックス内に表示されています。) 宜しくお願いいたします。

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

元ソースについてはたんなる凡ミスにみえますが・・・ sprintf($position_arrays,$i)) ってところが最低でもsprintf($position_arrays[$i]))にしないと ざっとかきます //nyuryoku.php <?php session_start(); ?> <form action="kakunin.php"> <?php $position_arrays = array('選択1','選択2','選択3','選択4','選択5'); for ($i = 0; $i < 5; $i++) { $checked = ($_SESSION["position"][$i] == $position_arrays[$i]) ? " checked":""; print <<<eof <input type="checkbox" name="position[{$i}]" value="{$position_arrays[$i]}"{$checked}>{$position_arrays[$i]}\n eof; } ?> <input type="submit" value="go"> </form> //kakunin.php <? session_start(); $_SESSION["position"]=$_REQUEST["position"]; print_r($_SESSION["position"]); ?> <form action="nyuryoku.php"> <input type="submit" value="back"> </form>

h-h13
質問者

補足

有難う御座います。 試してみたのですがだめでした。 入力画面→確認画面→入力画面という動作をおこなうとチェックが外れてしまってます。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

もうすこし簡単なモデルにしてチェックしてみては? とりあえずこんな感じで・・・ //nyuryoku.php <? session_start(); $p=$_SESSION["p"]; $checked["p"]["v1"]=in_array("v1",(array)$p)?" checked":""; $checked["p"]["v2"]=in_array("v2",(array)$p)?" checked":""; $checked["p"]["v3"]=in_array("v3",(array)$p)?" checked":""; print <<<eof <form action="kakunin.php"> <input type="checkbox" name="position[]" value="v1"{$checked["p"]["v1"]}>選択1</br> <input type="checkbox" name="position[]" value="v2"{$checked["p"]["v2"]}>選択2</br> <input type="checkbox" name="position[]" value="v3"{$checked["p"]["v3"]}>選択3</br> <input type="submit" value="go"> </form> eof; ?> //kakunin.php <? session_start(); $p=$_REQUEST["position"]; $_SESSION["p"]=$p; print_r($p); ?> <form action="nyuryoku.php"> <input type="submit" value="back"> </form>

h-h13
質問者

補足

ご回答ありがとうございます。 のちほど試してみます。 ですが、質問で書いた内容ではできないのでしょうか? できれば質問で記述した内容で作りたいのですが・・・ 申し訳ないのですが、よろしくお願いします。

関連するQ&A