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

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

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

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

バリデーション

Validationとは特定の入力データが、求められた条件に当てまっているかをチェックするために使われます。

Q&A

解決済

2回答

1627閲覧

PHPを用いて、送信フォームを作成しています。バリデーション実行後、エラーとなった際に入力値がリセットされてしまいます。書き方のアドバイス頂きたいです。

hare10

総合スコア3

PHP

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

バリデーション

Validationとは特定の入力データが、求められた条件に当てまっているかをチェックするために使われます。

0グッド

0クリップ

投稿2020/07/26 12:42

前提・実現したいこと

PHPを用いて、送信フォームを作成しています。
名前、年齢の入力部分に、未入力の場合にはエラーメッセージが出ます。
エラーメッセージと同時に入力した値がリセットされ保持されません。
バリデーション実行後にも値を保持した状態にしたいです。

年齢が未入力だった場合の画像

該当のソースコード

ファイルを4つに分けて作成しています。
入力ページをindex.php
送信後のページをsubmit.php
とし、
html部分とphp部分を分けています。
html部分はtemplateというファイルの中に入れております。
以下のような形です。

index.php
submit.php

templateファイル内
index.php
submit.php

該当のコードを以下に記載致します。

◉index.php

<?php include 'template/index.php' ?>

◉submit.php

<?php $name = $_POST['name']; $age = $_POST['age']; //初期化 $isError = false; //名前が空白の場合 if (strlen($name) == 0){ echo "名前が未入力です。${isError}"; } //年齢が空白の場合 if (strlen($age) == 0){ echo "年齢が未入力です。${isError}"; } //テンプレートの呼び出し if(strlen($name) == 0 or strlen($age) == 0) { //エラーの場合 include 'template/index.php'; }else{ //それ以外 include 'template/submit.php'; } ?>

template内

◉index.php

<html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html"; charset = "UTF-8"> <meta http-eqiv = "Content-Type" content="text/html" charset="UTFー8"> <title>sample</title> </head>
<body> <form action="submit.php?" method="post"> 名前 : <input type="text" name="name"><br> 年齢 : <input type="text" name="age"><br> <input type="submit" value="送信"> </form> </body>
</html>

◉submit.php

<DOCTYPE html> <html lang="ja"> <head> <meta http-eqiv = "Content-Type" content="text/html" charset="UTF-8"> <title>sample</title> </head>
<body> <p> 私の名前は<?php echo htmlspecialchars($name); ?>です。 年齢は<?php echo htmlspecialchars ($age); ?>です。 </p> </body>
</html>

該当のコードは以上です。
アドバイスよろしくお願い致します。

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

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

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

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

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

javahack

2020/07/26 13:45

バリデートでエラーが無い場合、submit.phpには$name、$ageは表示されるのでしょうか?
takasima20

2020/07/26 14:12

template で設定してないからそうなるでしょうねえ。
guest

回答2

0

自己解決

みなさん、ご回答、助言いただきありがとうございました。

if文で条件追加することで、自己解決しました。

投稿2020/08/01 22:38

hare10

総合スコア3

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

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

退会済みユーザー

退会済みユーザー

2020/08/01 22:42

質問も回答も、何かを伝えるには不十分なので、修正をお願いします。
guest

0

コードは markdown で記述されていないので、読んでいません。
タイトルに対してのみ回答します。

PHPを用いて、送信フォームを作成しています。バリデーション実行後、エラーとなった際に入力値がリセットされてしまいます。書き方のアドバイス頂きたいです。

php では、ページをまたぐデータの引継ぎには、多くの場合 session を使用します。
session 以外では POST/GET, cookie で引き渡すこともあります。

投稿2020/07/26 22:37

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問