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

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

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

PHP初心者です。 入力画面 (→ エラー画面) → 確認画面 → お礼メッセージ というメールフォームを作ろうと思います。 入力画面で選択したプルダウンの値を、エラー画面でも選択された状態で、しかも選択しなおすことができ、その後の確認画面では、最終的に選択した値がテキストで表示されるようにしたいのですが、やり方がわかりません。 やろうとしていることと全く同じやり方をしているサイトはこのサイトも含めていくつもあったのですが、phpのコードはソースに表示されないし、やり方を説明しているサイトを見つけることができませんでしたので、どなたかわかる方がいらっしゃいましたら、やり方を教えてください。

  • rei5
  • お礼率60% (3/5)
  • PHP
  • 回答数3
  • ありがとう数2

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

  • ベストアンサー
  • dell_OK
  • ベストアンサー率13% (740/5646)
回答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% (740/5646)
回答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
質問者

補足

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

関連するQ&A

  • 【お問い合わせフォーム】プルダウン選択で、フォームの内容を変更したい

    【お問い合わせフォーム】プルダウン選択で、フォームの内容を変更したい お世話になります。 ある商品に関するお問い合わせフォームを制作していて、 プルダウンで「商品名」を選択したあとに、フォーム内容を変えたいと思っているのですが、 いろんなサイトを見て勉強してみましたが、方法がわからなくて困っています。 JavaScript、Jquery、PHPなど、変更できれば種類は問いません。 例を挙げますと、 【プルダウン選択】商品A を選んだとき 【フォームの内容】テキストフィールド:氏名、住所、電話、お問い合わせ内容  ラジオボタン:性別 【プルダウン選択】商品B を選んだとき 【フォームの内容】テキストフィールド:氏名、ふりがな、住所、Eメール、お問い合わせ内容  チェックボックス:固定電話、携帯電話 というように、プルダウンで選んだ項目に対して、それ以降の項目を変更させたいです。 設置時の希望として、 新たなページにジャンプするにしても、inframeを使って、あたかも同じページ内で完結し、ページ移動していないように見せたいです。 また、後の更新を考えて、なるべくシンプルなディレクトリ構成ができれば嬉しいです。 サーバは、cgi、php、javascriptが使えます。Jqueryはまだ試したことがありません。 どうぞよろしくお願いいたします。

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

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

    • ベストアンサー
    • PHP
  • メールフォーム チェックボックス

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

    • 締切済み
    • PHP
  • プルダウンの選択項目がテキスト入力フォームに自動で入力される

    プルダウンで選択した項目がテキスト入力フォームに自動で入るようにしたいのです。教えていただけますでしょうか? 以上、よろしくお願いいたします。

  • プルダウンで選択された値を別ページで表示させたい

    題名の通りなのですが、なかなかマッチする情報がなく苦戦しております。 お力を貸していただけると幸いです。 実現したいのは、簡単にいえば、 http://www.bang.co.jp/?ID=dp844 このサイトのように、プルダウンで選択したデータを次のページで 表示したいと思っています。ただし表示させるだけではなくて プルダウンで選択された値を遷移先のフォームのhiddenにセットしたいのです。 javascriptであれこれやっているのですが、3日間たってもできておりません。 例えば、a.htmlのプルダウンで、りんごと選ばれて確認と押したら、 b.htmlに遷移し、画面には、りんごと表示されて、 <input type="hidden" name="name" value="りんご"> こういう形にしたいと思っています。 <a.html> 選択してください。←プルダウン りんご みかん すいか 注文するボタン <b.html> 果物   りんご←前ページで選択された情報が表示されている 送付先  テキストボックス 確認ボタン どうかお力添えをお願い致します。

  • メールフォームでの確認画面の表示方法

    お世話になっております。 htmlフォームで入力->cgi経由で確認->指定の宛先にフォーム送信と同時に.txtファイルに書込み というメールフォームを作成しているのですが、確認画面に関する以下の2点で困っています。 1)以下は省略していますが実際は確認項目が多いので、cgiにhtmlを書くのではなくconfirm.htmlという別のファイルを読み出して値だけを渡して確認を行いたいが上手く読み出せない。 2)確認画面から送信ボタンを押すと必須項目の入力がないとエラーが返ってくる。 1)に関して sub confirmを以下のように変えてみたのですが、なかなか読み込まれずそのままサーバエラーの表示が出てしまいました。 sub confirm{ my($code); $code = $form{'mode'}; open(CONF,"confirm.html"); while (CONF){ s/REPLACEKEY/$code/; print; } close(CONF); exit; }

    • 締切済み
    • CGI
  • PHP+JSのメールフォームで、選択肢によって送信先を変更かつ別のプル

    PHP+JSのメールフォームで、選択肢によって送信先を変更かつ別のプルダウンの項目を変更 はじめまして。今までレンタルのPerlCGIしか使ったことがないのですが、PHPでメールフォームを設置することになりました。ここ(http://www.office-kzm.com/7000/7100/)を参考に、シンプルなメールフォームはできたのですが、以下のことがうまくできません。 ・プルダウンAとBは連動している(Aの選択肢によってBの値が変わる) ・プルダウンAの選択肢により、メールの送信先が変わる(Bは送信先には関与しない) ・プルダウンや、ラジオボタンの値を、確認画面から戻った際に保持しておく AとBの連動だけならJavaScriptを使ってできるのですが・・・ 送信先は検索してもその仕様のプログラムの紹介ばかりで困っています。 どなたかやり方をご教授願います。

    • 締切済み
    • PHP
  • プルダウンで選択された値を計算し送信

    1~5の数字を選択するプルダウンメニュー$aformと、6~9を選択するプルダウンメニュー$bformがあり、投稿ボタンがひとつあるフォームを作りました。 $aformプルダウンで選択された値を×10にし、$bformプルダウンで選択された値に足して、投稿ボタンを押すとその値が変数に格納され、保存画面で数値が確認できるようにしたいのですが、投稿ボタンを押して一度保存をしても数値は0のままで計算されていないのですが、再度、投稿画面に戻り投稿を押すと計算がされてちゃんと結果が表示されます。ということは、計算するまでの流れは出来ていると思うのですが、なぜ一度で表示できないのかがわかりません。どういう可能性があるのか、もしくはズバリというものを教えていただけないでしょうか? <{assign var="a_suji" value=$aform*100}> <{assign var="kekka" value=$a_suji+$bform}> <input type="hidden" name="ymcount" value="<{$kekka}>" />

  • フォームの内容を確認画面で表示

    以前ご質問した内容で、改良したい部分があって、ご質問しました。 以前の質問は、 フォームで必要事項を入力してもらい(テキストやコンボなど)、「確認」みたいなボタンを押すと、入力した必要事項が確認できるものを作りたいのですが。 その値をメールで送信やDBに書き込むような作業はしない予定です。 単純に表示が出来ればOKです。 その画面を印刷して使用するものなので。 というものでした。 テキストボックスとコンボについては、出来ましたが、 チェックボックス、ラジオボタンの場合、どのように確認画面で表示すれば良いのかわからずご質問しました。 確認画面では、チェックボックスの値をテキストで表示するのではなく、 チェックボックスそのものを表示して、チェックの有無を確認できるようにしたいのですが(チェックをはずしたり出来る状態) 同じようにラジオボタンも選びなおせるようにしたいのです。 前回の投稿のURLはhttp://oshiete1.goo.ne.jp/kotaeru.php3?q=1014263 です。 使用したソースは、 michisanpoさんにお答え頂いたものを元にして使用しています。

    • ベストアンサー
    • Perl
  • PHP-メールフォームのプルダウンメニュー

    お世話になります。 現在、メールフォームのプルダウンメニューで下記のコードにより選択項目によってリンク先のページを切り替えて表示しています。 <form method="POST" name="form_select" id="sample_1"> <script><!-- function change_action_to(){ var 変更する項目一覧=new Array("","201501_1.php","201502_1.php","201503_1.php","201504_1.php","201505_1.php","201506_1.php","201507_1.php","201508_1.php","201509_1.php","201510_1.php","2015011_1.php","2015012_1.php"); var 選んである項目の番号=document.getElementById("sample_1_1").selectedIndex; var actionを変更したいフォームのオブジェクト=document.getElementById("sample_1"); actionを変更したいフォームのオブジェクト.setAttribute("action",変更する項目一覧[選んである項目の番号]); } //--></script> さらに、もう一つのプルダウンメニューで選択肢が「A」と「B」があり、 例えば1つ目で「2015年1月」を選択し、2つ目で「A」を選んだ場合、「201501_1a.php」へ もしくは1つ目で「2015年1月」を選択し、2つ目で「B」を選んだ場合、「201501_1b.php」へ と別ページへリンクする方法が知りたいです。 どなたかご教授お願いいたします。

    • 締切済み
    • PHP

専門家に質問してみよう