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

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

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

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

HTML

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

Q&A

解決済

1回答

2355閲覧

入力フォームで値を送信したときにフォームの値が消えてしまう

boron

総合スコア11

PHP

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

HTML

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

0グッド

0クリップ

投稿2020/08/21 07:30

編集2020/08/21 09:11

前提・実現したいこと

名前のフォームに値を入れて確認を押すと値が消えてしまうが消えないようにしたい。

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

消えてしまう

該当のソースコード

php

1<?php 2 3 if ($_POST['sname'] === ''){ 4 $error['sname'] = 'blank';//空欄の時を表す 5 6 } 7 ?> 8<!DOCTYPE html> 9 10<html> 11<head> 12<meta charset="UTF-8"> 13 14<meta http-equiv="X-UA-Compatible" content="IE=edge"> 15<meta name="viewport" content="width=device-width, initial-scale=1"> 16<title>会員登録</title> 17 18</head> 19 20<body> 21 22 <div> 23 <h3>会員登録</h3> 24<form action="" method="post"> 25<table> 26<tr><td>名前</td><td> 27 <input type="text" name="sname" value="<?php print(htmlspecialchars($_POST['sname'],ENT_QUOTES));?>"/></td> 28 </tr> 29 <tr><td></td><td><?php if ($error['sname'] === 'blank'): ?> 30 <p class='error'>*ニックネームを入力してください</p> 31<?php endif;?> 32</td></tr> 33</table> 34 <input type="submit" name="a" value="確認"/> 35<input type="reset" value="取消"/> 36</form> 37 </div> 38 39</body> 40</html> 41

試したこと

調べるとvalueに保持したい値を書けばよいとのことだったので$_POST['sname']とし、セキュリティのことを考えてhtmlspecialcharsも書きました。

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

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

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

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

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

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

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

m.ts10806

2020/08/21 08:05 編集

>エラーが発生したときにフォームの値を保持できない >名前のフォームに値を入れて確認を押すと値が消えてしまうが消えないように 上記2つは矛盾しています。 コードを見る限り「エラー」は未入力で送信したときのエラーのみ保持されているように見えます。 ということはタイトルを見るなら「エラー発生=未入力だから何もvalueに入らないのは当然」となります。 他にも要件あるのでしょうか。
boron

2020/08/21 09:09

返信ありがとうございます。 矛盾した文章で申し訳ありません。 確認を押したときにフォームに入力していた値が消えてしまう問題を直したいです。 エラーの部分は関係ありません。修正します。
guest

回答1

0

ベストアンサー

コピペしましたが、現象再現しませんでした。
[a]と入力→ボタン押下 できちんと[a]が初期値に設定されます。

ただ、ひとまず、Notice発生しているので、そこは対応した方が良いかと思います。
※発生している問題とは無関係です

Notice: Undefined index: sname in xxx.php on line 3
Notice: Undefined variable: error in xxx.php on line 29

対応の仕方は$_SERVERのREQUEST METHODを見てPOSTのときのみ$_POSTを参照することです。
valueで直接$_POST参照しているところも変えた方が良いでしょう。
$_POSTを直接見るよりfilter_input()利用するのが望ましいです。

表示されてないのでしたら下記参考にエラー表示設定をしてください。
PHPのエラー表示設定について

投稿2020/08/21 10:05

m.ts10806

総合スコア80861

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

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

boron

2020/08/21 13:52

教えて頂いたことをもとにもう一度考え直したいと思います。 ありがとうございました。
m.ts10806

2020/08/21 21:15

解決してから解決済みとしてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問