';\n }?>\n

\n \" placeholder=\"山田太郎\">\n\n

フリガナ*

\n alert(\"' . $_SESSION['error']['huri'] . '\");';\n }?>\n

\n \" placeholder=\"ヤマダタロウ\">\n\n\n

電話番号

\n

\n alert(\"' . $_SESSION['error']['suuzi'] . '\");';\n }?>\n

\n \" placeholder=\"09012345678\">\n\n

メールアドレス*

\n

\n alert(\"' . $_SESSION['error']['mail'] . '\");';\n }?>\n

\n \" placeholder=\"test@test.co.jp\">\n\n

お問い合わせ内容をご記入ください*

\n

\n alert(\"' . $_SESSION['error']['box'] . '\");';\n }?>\n

\n \n \n \n\n\n```\n\n### 試したこと\nif (isset($_POST['register'])) {\n // 入力値の検証とエラーチェックを行う(省略)\n\n if (エラーチェックに引っかかった場合) {\n $nameError = $_SESSION['error']['name'] ?? '';\n $huriError = $_SESSION['error']['huri'] ?? '';\n $suuziError = $_SESSION['error']['suuzi'] ?? '';\n $mailError = $_SESSION['error']['mail'] ?? '';\n $boxError = $_SESSION['error']['box'] ?? '';\n }\n}を追加したが今度はwebsiteが読み込めなくなった\n\n","answerCount":2,"upvoteCount":0,"datePublished":"2023-05-26T08:17:36.442Z","dateModified":"2023-05-30T14:29:58.000Z","acceptedAnswer":{"@type":"Answer","text":"画面を遷移しない想定であればUIはjsで作ってください\n\n# 参考\n```javascript\n\n
\n氏名:
\nメール:
\n\n
\n```","dateModified":"2023-05-30T14:29:36.000Z","datePublished":"2023-05-26T08:27:33.824Z","upvoteCount":0,"url":"https://teratail.com/questions/t545s9338sui02#reply-1roa8yu08sfiax"},"suggestedAnswer":[{"@type":"Answer","text":"PHPは基本的にページのロード時にしか動けないので、そういった処理は元のページのHTMLとJavaScriptでやります。\n\n元のページの氏名の `` に `required` 属性を付けるだけでいいかもしれません。\n","dateModified":"2023-05-26T08:27:34.324Z","datePublished":"2023-05-26T08:27:34.324Z","upvoteCount":0,"url":"https://teratail.com/questions/t545s9338sui02#reply-fcnlzwrjw91nw0","comment":[{"@type":"Comment","text":"ありがとうございます!やってみると「このフィールドを入力してください」という表示が出てきました。\n\n下記のコードに書き換えるとお問合せboxが二つに表示されてしまったのですがこれはどうしたらいいのでしょうかTTアドバイスいただけると幸いです。(これ以外は画面遷移せずにalertが表示されるようになりました。\n\n

お問い合わせ内容をご記入ください*

\n' . $_SESSION[\"box\"] . '';\n echo '';\n} else {\n echo '';\n}\n?>\n","datePublished":"2023-05-26T09:04:26.338Z","dateModified":"2023-05-26T09:04:26.338Z"},{"@type":"Comment","text":"こちらはalertも問題なく上に表示されている状態です。\n","datePublished":"2023-05-26T09:06:14.338Z","dateModified":"2023-05-26T09:06:14.338Z"}]}],"breadcrumb":{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"トップ","url":"https://teratail.com"},{"@type":"ListItem","position":2,"name":"PHPに関する質問","url":"https://teratail.com/tags/PHP"},{"@type":"ListItem","position":3,"name":"PHP","url":"https://teratail.com/tags/PHP"}]}}}
質問するログイン新規登録
PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

388閲覧

error発生時にalertを表示させたい(画面遷移をせずに)

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

1クリップ

投稿2023/05/26 08:17

0

1

実現したいこと

error発生時にalertを表示させたい(画面遷移をせずに)

前提

お問合せフォームの画面でエラーになった時に画面遷移をしてalertが表示されます↓
イメージ説明

画面遷移後↓
イメージ説明

これを画面遷移をせずにalertを表示したいです!!!

該当のソースコード

<?php if(isset($_SESSION['error']['name'])){ echo '<script>alert("' . $_SESSION['error']['name'] . '");</script>'; }?> </p> <input type="text" name="name" id="name" maxlength="10" value="<?php if(isset($_SESSION["name"])){echo $_SESSION["name"];} ?>" placeholder="山田太郎"> <p>フリガナ<span>*</span></p> <?php if(isset($_SESSION['error']['huri'])){ echo '<script>alert("' . $_SESSION['error']['huri'] . '");</script>'; }?> </p> <input type="text" name="huri" id="huri" maxlength="10" value="<?php if(isset($_SESSION["huri"])){echo $_SESSION["huri"];} ?>" placeholder="ヤマダタロウ"> <p>電話番号</p> <p> <?php if(isset($_SESSION['error']['suuzi'])){ echo '<script>alert("' . $_SESSION['error']['suuzi'] . '");</script>'; }?> </p> <input type="text" name="suuzi" id="suuzi" value="<?php if(isset($_SESSION["suuzi"])){echo $_SESSION["suuzi"];} ?>" placeholder="09012345678"> <p>メールアドレス<span>*</span></p> <p> <?php if(isset($_SESSION['error']['mail'])){ echo '<script>alert("' . $_SESSION['error']['mail'] . '");</script>'; }?> </p> <input type="text" name="mail" id="mail" value="<?php if(isset($_SESSION["mail"])){echo $_SESSION["mail"];} ?>" placeholder="test@test.co.jp"> <p class="nr">お問い合わせ内容をご記入ください<span>*</span></p> <p> <?php if(isset($_SESSION['error']['box'])){ echo '<script>alert("' . $_SESSION['error']['box'] . '");</script>'; }?> </p> <textarea name="box" id="box" cols="300" rows="30"><?php if(isset($_SESSION["box"])){echo $_SESSION["box"];} ?></textarea> <button type="submit">送信</button> </form> </div>

試したこと

if (isset($_POST['register'])) {
// 入力値の検証とエラーチェックを行う(省略)

if (エラーチェックに引っかかった場合) { $nameError = $_SESSION['error']['name'] ?? ''; $huriError = $_SESSION['error']['huri'] ?? ''; $suuziError = $_SESSION['error']['suuzi'] ?? ''; $mailError = $_SESSION['error']['mail'] ?? ''; $boxError = $_SESSION['error']['box'] ?? ''; }

}を追加したが今度はwebsiteが読み込めなくなった

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

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

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

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

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

guest

回答2

0

PHPは基本的にページのロード時にしか動けないので、そういった処理は元のページのHTMLとJavaScriptでやります。

元のページの氏名の <input>required 属性を付けるだけでいいかもしれません。

投稿2023/05/26 08:27

int32_t

総合スコア22019

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

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

退会済みユーザー

退会済みユーザー

2023/05/26 09:04

ありがとうございます!やってみると「このフィールドを入力してください」という表示が出てきました。 下記のコードに書き換えるとお問合せboxが二つに表示されてしまったのですがこれはどうしたらいいのでしょうかTTアドバイスいただけると幸いです。(これ以外は画面遷移せずにalertが表示されるようになりました。 <p class="nr">お問い合わせ内容をご記入ください<span>*</span></p> <?php if(isset($_SESSION['error']['box'])){ echo '<textarea name="box" id="box" cols="300" rows="30">' . $_SESSION["box"] . '</textarea>'; echo '<script>'; echo 'setTimeout(function() {'; echo 'alert("' . $_SESSION['error']['box'] . '");'; echo '}, 0);'; echo '</script>'; } else { echo '<textarea name="box" id="box" cols="300" rows="30">' . $_SESSION["box"] . '</textarea>'; } ?>
退会済みユーザー

退会済みユーザー

2023/05/26 09:06

こちらはalertも問題なく上に表示されている状態です。
guest

0

ベストアンサー

画面を遷移しない想定であればUIはjsで作ってください

参考

javascript

1<script> 2document.addEventListener('invalid',e=>{ 3 if(e.target.matches('[data-invalid-message]')){ 4 alert(e.target.dataset.invalidMessage); 5 } 6},true); 7</script> 8<form> 9氏名:<input type="input" name="name" data-invalid-message="氏名は必須入力です。10文字以内で入力ください" pattern=".{1,10}" required><br> 10メール:<input type="input" name="mail" data-invalid-message="Eメールは必須入力です。" required><br> 11<input type="submit" value="send"> 12</form>

投稿2023/05/26 08:27

編集2023/05/26 09:31
yambejp

総合スコア118164

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

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

退会済みユーザー

退会済みユーザー

2023/05/30 05:29

こちらで問題改善することができました。ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.29%

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

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

質問する

関連した質問