質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

1回答

536閲覧

問い合わせフォーム実装の際のエラーを解消したい

ichi5

総合スコア10

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2018/12/18 09:06

編集2018/12/18 09:26

前提・実現したいこと

現在お問い合わせフォームを作成中で、
htmlファイル上にphpを呼び出す形で実装しているのですが画面移行がうまくいかず入力後クリアになってしまいます。
phpファイル上では反映がうまくいくのですが、
htmlファイルのまま、入力後確認画面→送信完了画面
へ順次反映させたいです。

問い合わせフォームの実装自体が初の試みで、
いろいろと足りないところがありますが、ご教授いただけますと幸いです。

発生している問題・エラーメッセージ

そのファイル上でフォーム入力後ボタンを押すとクリアになってしまい、次の画面に移行ができません。

また、下記のように頭に進行中の状況が表示されてしまうのをなくしたいです。
array(0) { }

該当のソースコード

〜htmlファイル内容〜
(form部分にphpファイルを呼び出し)

<body> <form> </form> <script> $('form').load('mail.php'); </script> </body>

====================================

〜mail.phpファイル内容〜 <body> <p class="lead">必要事項を記入の上、送信ボタンを押してください。</p> <?php if( $page_flag === 1 ): ?> <div class="container"> <form method="post" action=""> <div class="element_wrap"> <label>氏名</label> <p> <?php echo $_POST['your_name']; ?> </p> </div> <div class="element_wrap"> <label>会社名</label> <p> <?php echo $_POST['organization']; ?> </p> </div> <div class="element_wrap"> <label>メールアドレス</label> <p> <?php echo $_POST['email']; ?> </p> </div> <div class="element_wrap"> <label>電話番号</label> <p> <?php echo $_POST['tel']; ?> </p> </div> <div class="element_wrap"> <label>お問い合わせ内容</label> <p> <?php echo nl2br($_POST['contact']); ?> </p> </div> <input type="submit" name="btn_back" value="戻る"> <input type="submit" name="btn_submit" value="送信"> <input type="hidden" name="your_name" value="<?php echo $_POST['your_name']; ?>"> <input type="hidden" name="organization" value="<?php echo $_POST['organization']; ?>"> <input type="hidden" name="email" value="<?php echo $_POST['email']; ?>"> <input type="hidden" name="tel" value="<?php echo $_POST['tel']; ?>"> <input type="hidden" name="contact" value="<?php echo $_POST['contact']; ?>"> </form> </div> <?php elseif( $page_flag === 2 ): ?> <p>送信が完了しました。</p> <?php else: ?> <div class="container"> <form method="post" action=""> <div class="element_wrap"> <label>氏名</label> <input type="text" name="your_name" value="<?php if( !empty($_POST['your_name']) ){ echo $_POST['your_name']; } ?>"> </div> <div class="element_wrap"> <label>会社名</label> <input type="text" name="organization" value="<?php if( !empty($_POST['organization']) ){ echo $_POST['organization']; } ?>"> </div> <div class="element_wrap"> <label>メールアドレス</label> <input type="text" name="email" value="<?php if( !empty($_POST['email']) ){ echo $_POST['email']; } ?>"> </div> <div class="element_wrap"> <label>電話番号</label> <input type="text" name="tel" value="<?php if( !empty($_POST['tel']) ){ echo $_POST['tel']; } ?>"> </div> <div class="element_wrap"> <label>お問い合わせ内容</label> <textarea name="contact"><?php if( !empty($_POST['contact']) ){ echo $_POST['contact']; } ?></textarea> </div> <input type="submit" name="btn_confirm" value="入力内容を確認する"> </form> </div> <?php endif; ?> </body>

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2018/12/18 09:08

(質問文は編集できます)質問文のコードはそれぞれコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。 また、質問文にエラー文を追記してください。PHPのエラー文が出ていない場合は出すように設定してください。http://mawatari.jp/archives/how-to-display-php-errors
ichi5

2018/12/18 09:27

ありがとうございます。編集したら見やすくなりました。
guest

回答1

0

mail.php の中で、<form method="post" action="">ってあるけど、
送信ボタンをクリックしたあとにurlがmail.phpにならずに
htmlファイルを再読込しちゃっていたりしませんか。

そもそも、静的htmlファイルから
わざわざjQueryのload()メソッドでphpファイルを呼ばなきゃいけない理由がわからないのですが。

入力フォーム、確認フォーム、完了画面、
と3つphpファイルを分離させて丁寧に作れば、
簡単にできちゃう話のような気がします。


あくまでhtmlファイルのままでということなので、
であれば、
jQueryも使っていることなので、
Ajaxでフォームを送信しちゃえばいいですね、
サーバーと非同期通信するわけです。
ページ遷移せず、URLも変えずに、
Ajaxを使ってバックグラウンドでサーバーと通信するという。

基本中の基本:
Ajaxでpost送信 - Qiita

Ajax使ってPOST送信したのを受け取るphpの処理を起こして、
送信データの検証を行ってNGならエラー内容を応答し、
OKならOKなりの応答をするように設計します。
(htmlソースを応答することではない。xmlやjsonなどで返すことになる。)

応答するphp側の処理の参考にこちらをどうぞ:
jQuery:Ajaxを使用してPOST送信でデータ取得 | raining

投稿2018/12/18 09:37

編集2018/12/18 11:40
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ichi5

2018/12/18 09:46 編集

ご回答ありがとうございます。 htmlを再読み込み、なるほどそうなんですね。 既存のhtmlファイルのURLを変えずに、phpファイルを埋め込みすればいいのかなと思ったのが理由ですが、そう難しくはなさそうですよね。 もう少し原因を調べてみます。
ichi5

2018/12/18 10:24

ありがとうございます。 リダイレクトも考えました。が、やはり基本はhtmlのままでいきたいので どうしてもな場合の最終手段に考えたいですね。
ichi5

2018/12/18 12:02

ご丁寧な回答ありがとうございます! 高度なテクニックが必要のようですね。。 自分には少し難易度高めですが、勉強いたします。考えてくださってありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問