Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
  • ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPのSESSIONを使用したメールフォームについてご質問があります)

PHPのSESSIONを使用したメールフォームの戻るボタンで項目が選択されている状態にする方法

このQ&Aのポイント
  • PHPを使用したメールフォームで戻るボタンを押すと、項目が選択されている状態にする方法
  • PHPのSESSIONを使用したメールフォームで戻るボタンを押した後に、項目を選択した状態で戻る方法
  • PHPのSESSIONを利用したメールフォームで、戻るボタンを押しても項目が選択された状態を維持する方法

質問者が選んだベストアンサー

  • ベストアンサー
  • kuzumiHK
  • ベストアンサー率72% (132/183)
回答No.1

エラーメッセージを出すための$_SESSION['err_category']のほかに、 カテゴリを記憶しておくための$_SESSION['category']が必要なように思います。 カテゴリのvalue値が日本語だと、「お申し込み」の「し」の前に \マークが入ってしまい、マッチしなくなってしまったため、 value値は数値になるように変更しました。 (文字コードによっては大丈夫かもしれませんが。。) (配列順に、お問合せ=1、お申し込み=2、その他=3にしました) ※index.phpとconfirm.phpに配列が2重になってしまっているため、 この部分だけの共通外部ファイルにしたほうがよいかもしれませんね。。 また、javascript:history.backは、 phpを読み込みなおしてくれないことが多いようなので、 戻るリンクはphpへの直リンクに変更しています。 具体的には以下のソースです。 /* index.php */ <?php session_start(); ?> <html> <body> <form action="confirm.php" method="post"> <?php echo $_SESSION['err_category']; ?> <select name="category" id="category"> <option value="">-- 選択してください --</option> <?php $cates = array('お問合せ', 'お申し込み', 'その他'); $i=1; foreach ($cates as $cate) { if($i == $_SESSION['category']){ echo "<option value=\"$i\" selected=\"selected\">$cate</option>\n"; } else{ echo "<option value=\"$i\">$cate</option>\n"; } $i++; } ?> </select> <input type="submit" value="送信"> </form> </body> </html> /* confirm.php */ <?php session_start(); ?> <html> <body> <?php $cates = array('お問合せ', 'お申し込み', 'その他'); $category = $_POST['category']; // postされたcategoryを$categoryに格納 if($category == ""){ // $categoryが空だったらセッションにエラーメッセージを追加 $err_category = "<p class=\"error\">お問合せ項目を選択して下さい。</p>"; $_SESSION['err_category'] = $err_category; echo $err_category; } else{ // 空じゃなかったらエラーメッセージのセッションを消去して$categoryを表示 unset($_SESSION['err_category']); $_SESSION['category'] = $category; echo "<p>カテゴリ:$cates[$category]</p>"; } ?> <a href="index.php">戻る</a> </body> </html>

すると、全ての回答が全文表示されます。

関連するQ&A