• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:メールフォームのエラー画面でプルダウンが選択されたままにする方法)

メールフォームのエラー画面でプルダウンが選択されたままにする方法

このQ&Aのポイント
  • 入力画面からエラー画面に遷移した際に、プルダウンの選択状態を保ちたいです。
  • 確認画面で選択したプルダウンの値をテキストで表示し、エラー画面でも再度選択できるようにしたいです。
  • PHP初心者ですが、同じ方法を示しているサイトを見つけられませんでした。ご教授いただけると助かります。

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

  • ベストアンサー
  • dell_OK
  • ベストアンサー率13% (766/5720)
回答No.3

選択されていない場合にメッセージを表示する方法ですが、 選択されていないと言う状態をなくすのもひとつです。 つまり、プルダウンの中から空白の選択肢を除いて、 最初からどれかが選択されている状態にすると言う事です。 とは言え、プルダウンの一番上には「選択してください」などと表示したいかも知れませんので、 まあ、それはおいておきましょう。 では、選択された状態の保持と、 メッセージ表示について簡単なソースを作成してみましたので、 こちらで動作を確認してみてください。 これは私が思うにまかせて作成したもので、 記述や用法が一般的な作成方法ではないと思いますから、 あくまで、やり方としてのあるひとつの方法として、参考にしてください。 また、他の処理に関するものは含んでいませんので、 現在質問者様が作成されたものに埋め込むには、 分岐処理など複雑になると思いますから、ご注意ください。 他の部分がなくても、これだけで.phpファイルを作成すれば、 それなりに動作すると思います。 <?php //選択肢の準備 $select_strings = array("選択してください","選択肢1","選択肢2"); $select_values = array("","1","2"); //リクエストメソッドの分岐 switch ($_SERVER["REQUEST_METHOD"]){ case "POST": //選択されたvalueの値 $selected_value = $_POST["sel"]; //選択されたvalueの値を持つ選択候補のタグ属性を"selected"にする準備 $selected_array[$selected_value] = "selected"; //選択されたかどうかの判断 if ($selected_value==""){ echo "選択されていません。"; }else{ echo $select_strings[$selected_value]."が選択されました。"; } break; } ?> <form method="POST"> <select name="sel"> <?php //選択肢プルダウン foreach ($select_strings as $key => $value){ echo "<option value=\"{$select_values[$key]}\" {$selected_array[$select_values[$key]]}>{$select_strings[$key]}</option>"; } ?> </select> <input type="submit"> </form>

rei5
質問者

お礼

詳しいコードを教えていただきありがとうございました! 一つ前にいただいた回答に自分のコードをつけようとしたら、補足は一度しか投稿できないことに気づきました。この掲示板を利用するのは2回目で、あまりよく知らなかったので、あわててサポートにメールをして返事を待っていたところでした。申し訳ございませんでした。 なんと、プルダウン未選択の場合のエラーメッセージも、エラー画面で選択されたままにするのも、両方うまくいきました! コードだけじゃなく、説明のコメントつきで大変助かりました。 大変ありがとうございました!

その他の回答 (2)

  • dell_OK
  • ベストアンサー率13% (766/5720)
回答No.2

入力画面、エラー画面、確認画面、お礼メッセージ画面、すべての画面をひとつの.phpファイルで処理する方法はどうでしょうか。 多少ソースは煩雑になりますが、ひとつの.phpファイルで処理して自分自身へsubmitすれば受け渡しの事などをあまり考えなくてもいいような気がします。 少なくとも、エラー画面は、入力画面の再入力ですから入力画面と同じ.phpファイルになると思いますしそうした方がいいと私は思います。 メールフォーム以前に、プルダウンの選択を保持する方法がわからないのでしたら、それだけのソースを用意する事はできると思います。 最初から作るのは手間なので、すでに作られている何かがあれば、そのソースを載せられてみてはいかがでしょうか。

rei5
質問者

補足

返事が遅くなり申し訳ございません。 かなり整ってないと思いますが、以下が使用しようとしているコードです。 何も選択されなかったらエラーメッセージが表示されるようにしたかったのですが、PHPでのやり方がよくわかりませんでした。そちらももしご回答いただければ助かります。(現在とりあえずimputで空の場合のエラーを書いています) 現在のところ一つのPHPファイルに全て入っている状態です。 (長くなったので、コードは別の補足欄に書きます。)

noname#140925
noname#140925
回答No.1

入力チェックを行なった後、入力値をエラー画面に反映させれば良いだけです。 メールに限らず、入力フォーム全般的に同じですので、下記を参考にして、フォーム入力値の扱い方を見直しては如何でしょうか? [参考]サンプルで理解! フォームデータの受け渡し(1/3) - @IT http://www.atmarkit.co.jp/flinux/rensai/mysql5_03/mysql5_03a.html

参考URL:
http://www.atmarkit.co.jp/flinux/rensai/mysql5_03/mysql5_03a.html
rei5
質問者

補足

参考サイトありがとうございます。 このサイトからサンプルをダウンロードしたのですが、解凍でエラーが出たので、サイトを読むだけになりました。 やはり初心者の私にはこれから応用するには難しいです。 申し訳ございません。 具体的なコードがわかりましたら助かります。