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

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

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

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

HTML

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

Q&A

解決済

3回答

2345閲覧

【PHP】$_POST変数をform内のvalueでechoすると表示されない

p.io

総合スコア4

PHP

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

HTML

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

0グッド

1クリップ

投稿2020/07/01 10:01

編集2020/07/01 10:34

前提・実現したいこと

PHPで入力フォームを作っています。
formにて入力 → 確認画面 → 修正と画面遷移を1つのファイルで行っています。

確認画面から、修正へと進むとすでに入力した内容をinput内に表示したいのですが、なぜか表示できていません。

該当のソースコード

php

1<?php 2 3//画面遷移のフラグ設定 4$flag=0 5if($_POST["confirm"]){ 6 $flag=1; 7}else($_POST["submit"]){ 8 $flag=2; 9} 10... 11 12//確認画面 13if($flag==1): 14?> 15 16<form action="post.php" method="post"> 17 <p>入力内容</p> 18 <?php echo $_POST["content"] ?> 19 <input type="submit" name="back" value="修正する"> 20 <input type="submit" name="submit" value="送信"> 21 <input type="hidden" name="content" value="<?php echo $_POST["content"] ?>"> 22</form> 23 24//送信後の処理 25<?php if($flag==2): ?> 26・・・ 27 28//入力ページ 29<?php else: ?> 30 <form action="post.php" method="post"> 31 <p>入力内容</p> 32 <input type="text" name="content" value="<?php if(!empty($_POST["content"])){echo $_POST["content"];} ?>"> //ここのvalueが入力フォームに出力されない 33 <input type="submit" name="confirm" value="確認する"> 34 </form> 35<?php endif; ?> 36

試したこと

試したことは以下の2つです。

1.var_dumpにて、contentに文字列が入っているか

以下出力

["content"]=> string(4) "aaaa"

ちゃんと格納はされていました。

2.valueの部分を以下に変更

html

1 <input type="text" name="content" value="content">

入力フォームにcontentと表示されました。

他にも、調べたのですが情報が見つからず、どなたかわかる方いましたら助けていただけると嬉しいです。
よろしくお願い致します。

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

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

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

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

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

guest

回答3

0

m.ts10806さんの指摘に加えて、いくらか文法のミスがみられます。
正直、多すぎてどう指摘すればいいのかわからなかったので、箇条書きにしました。

php

1// その1 文法エラー 2$flag=0 3$flag=0; 4 5// その2 文法エラー 6}else($_POST["submit"]){ 7}elseif($_POST["submit"]){ 8 9// その3 文法エラー 10<?php if($flag==2): ?> 11<?php elseif($flag==2): ?> 12 13// その4 confirmというname属性の属性値がform内にない 14<input type="hidden" name="confirm" value="1"> 15 16 17// 以下、なくても動作はしないではない 18// その1 undefinedの場合も考慮した条件分岐 19if($_POST["confirm"]){ 20if(isset($_POST["confirm"])){ 21 22}elseif($_POST["submit"]){ 23}elseif(isset($_POST["submit"])){ 24 25// その2 26入力ページの二つのボタンの動作が現状のものでは同じになってしまうので 27<input type="submit" name="back" value="修正する"> 28を削除し、 29<input type="submit" name="submit" value="送信"> 3031<input type="submit" name="submit" value="確認画面へ"> 32などに変更する。 33

// 追記 こちらの環境で動いたものを上げておきます。

php

1<?php 2 3//画面遷移のフラグ設定 4$flag=0; 5if(isset($_POST["confirm"])){ 6 $flag=1; 7}elseif(isset($_POST["submit"])){ 8 $flag=2; 9} 10 11//確認画面 12if($flag==1): 13?> 14 15<form action="post.php" method="post"> 16 <p>入力内容</p> 17 <?php echo $_POST["content"] ?> 18 <input type="submit" name="back" value="修正する"> 19 <input type="submit" name="submit" value="送信"> 20 <input type="hidden" name="content" value="<?php echo $_POST["content"] ?>"> 21</form> 22 23<!-- 送信後の処理 --> 24<?php elseif($flag==2): ?> 25<p>送信後の処理が入ります</p> 26 27<?php else: ?> 28 <form action="post.php" method="post"> 29 <p>入力内容</p> 30 <input type="text" name="content" value="<?php if(!empty($_POST["content"])){echo $_POST["content"];} ?>"> //ここのvalueが入力フォームに出力されない 31 <input type="hidden" name="confirm" value="1"> 32 <input type="submit" name="submit" value="確認画面へ"> 33 </form> 34<?php endif; ?>

投稿2020/07/01 10:30

編集2020/07/01 14:16
hayato7

総合スコア1135

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

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

p.io

2020/07/01 11:41

ご丁寧にありがとうございます! 殴り書きでコードを書かせていただいたので、記述に間違いが多くあり申し訳ないです。 一つ一つ今後気をつけさせていただきます。 確認画面の部分は、 <input type="submit" name="confirm" value="確認画面へ"> でした。こちらも修正させていただきました。 ただ、こちらの状態で解決できていないのが現状です。 また、もう一つ気になったのですが、このようなチェックの場合は、isset()と!empty()どちらを利用すると良いでしょうか?
hayato7

2020/07/01 14:19

> ただ、こちらの状態で解決できていないのが現状です。 何が原因でまだ解決できていないのか、わからないのでとりあえずこちらのローカル環境で動いたものを追記としてのせておきました。 >また、もう一つ気になったのですが、このようなチェックの場合は、isset()と!empty()どちらを利用すると良いでしょうか? その時次第かなっと、その値がundefinedかどうかをチェックしたいのか、空なのかをチェックしたいのかで決めるのが良いと思います。
p.io

2020/07/02 08:52

ご回答ありがとうございます! もう一度、書き直して動作確認をしてみます! 今後ともよろしくお願いいたします。
guest

0

confirmというname属性の属性値がform内にないからでは。

投稿2020/07/01 10:17

m.ts10806

総合スコア80875

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

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

p.io

2020/07/01 10:20

ご回答ありがとうございます! 具体的に教えていただけませんか?
m.ts10806

2020/07/01 10:22

if($_POST["confirm"]){ ↑上記を通るためには name=confirmがどこかにないといけないですが、ありません。 「入力ページ」のformの送信ボタンのname属性の属性値をsubmitではなくconfirmにする必要があると思います
p.io

2020/07/01 10:33

ご指摘ありがとうございます! こちら、私の記述ミスです。 修正させていただきます。 confirmにしていたのですが、それでも表示されず困っています。
m.ts10806

2020/07/01 11:43

「ちゃんと動かす」のであれば、今の状態から何とかするよりも 1つ1つ丁寧に確認しながら最初から書き直す方が確実かと思います。 (私なら書き直しますし、ロジックや処理順などから再検討します) 結局のところ、書いたようにしか動きませんので。
p.io

2020/07/02 08:53

一つ一つ確認して、もう一度初めから組み直してみたいとおもいます! ご丁寧にご回答ありがとうございます! 今後ともよろしくお願いいたします!
guest

0

自己解決

数日置いて実行したところ、正しく入力フォームに値が表示されていました。
キャッシュによるバグであった可能性があります。
ご回答いただいた方、ありがとうございました。

投稿2020/07/05 04:21

p.io

総合スコア4

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問