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

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

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

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

HTML

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

Q&A

解決済

1回答

4062閲覧

POSTで送信する値を【入力画面】→【確認画面】→【確定画面】で保持させたい

ujinchu

総合スコア19

PHP

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

HTML

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

0グッド

0クリップ

投稿2019/03/22 23:37

POSTで送信する値を

【入力画面】→【確認画面】→【確定画面】

で保持させたいと考えています。

現状、【入力画面】→【確認画面】での保持はできているのですが、

【確認画面】→【確定画面】に移る際に保持できません。

どうかお力をお貸しくださいm(._.)m

html

1//入力画面 2<!DOCTYPE html> 3<html lang="ja"> 4 <head> 5 <meta charset="utf-8"> 6 <title>フォーム画面</title> 7 </head> 8 <body> 9 <form class="form1" action="confirm.php" method="post"> 10 名前: <br> 11 <input type="text" name="onamae" placeholder="名前を入力してください"> 12 <br> 13 趣味: 14 <br> 15 <input type="checkbox" name="hobby[]" value="スポーツ">スポーツ<br> 16 <input type="checkbox" name="hobby[]" value="ゲーム">ゲーム<br> 17 <input type="checkbox" name="hobby[]" value="食事">食事<br> 18 <br> 19 <br> 20 本文: 21 <br> 22 <textarea name="honbun" rows="8" cols="80"></textarea> 23 <br> 24 <input type="hidden" name="user_id" value="0001"> 25 <br> 26 <input type="submit" value="送信"> 27 </form> 28 </body> 29</html> 30

php

1//確認画面 2<!DOCTYPE html> 3<html lang="ja"> 4 <head> 5 <meta charset="utf-8"> 6 <title>確認画面</title> 7 </head> 8 <body> 9 <form name="form1" action="view.php" method="post"> 10 <?php 11 echo $_POST['onamae'] . "さん、こんにちは!<br><br>"; 12 13 if(isset($_POST['hobby'])){ 14 $hobby = implode('と', $_POST['hobby']); 15 echo "私の趣味は" . $hobby . "です<br>"; 16 }else{ 17 echo "趣味はありません。"; 18 }; 19 echo "<br><br>"; 20 echo "入力内容:<br>"; 21 echo nl2br($_POST['honbun']); 22 ?> 23 <br> 24 <input type="submit" value="確認" name="confirm"> 25 <input type="submit" value="戻る" name="back"> 26 <input type="hidden" name="user_id" value="<?= $_POST['user_id'] ?>"> 27 <input type="hidden" name="onamae" value="<?= $_POST['onamae'] ?>"> 28 <input type="hidden" name="honbun" value="<?= $_POST['honbun'] ?>"> 29 <input type="hidden" name="hobby" value="<?= $_POST['hobby'] ?>"> 30 </form> 31 </body> 32</html> 33

php

1//確定画面 2<!DOCTYPE html> 3<html lang="ja"> 4 <head> 5 <meta charset="utf-8"> 6 <title>確認画面</title> 7 </head> 8 <body> 9 <?php if($_POST['confirm']){ 10 echo $_POST['onamae'] . "さんの情報を登録しました!<br><br>"; 11 12 if(isset($_POST['hobby'])){ 13 $hobby = implode('と', $_POST['hobby']); 14 echo "私の趣味は"; 15 echo $hobby; 16 echo "です<br>"; 17 }else{ 18 echo "趣味はありません。"; 19 }; 20 21 echo "入力内容:<br>"; 22 echo nl2br($_POST['honbun']); 23 ?> 24 <?php 25 } else { 26 ?> 27 <form class="form1" action="confirm.php" method="post"> 28 名前: <br> 29 <input type="text" name="onamae" value="<?= $_POST['onamae'] ?>"> 30 <br> 31 <textarea name="honbun" rows="8" cols="80"><?= $_POST['honbun'] ?></textarea> 32 <br> 33 <input type="hidden" name="user_id" value="<?= $_POST['user_id'] ?>"> 34 <br> 35 <input type="submit" value="送信"> 36 <?php } ?> 37 </form> 38 </form> 39 40 </body> 41</html> 42

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

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

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

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

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

m.ts10806

2019/03/23 00:58 編集

確認画面でブラウザ「ソースを表示」してちゃんとhiddenに値は入ってますか? また、画面名とtitleは合わせて置いたほうが良いとおもいます
ujinchu

2019/03/23 01:16

回答ありがとうございます! ソース表示で確認ができておりませんでした…。 そして値が入っておりませんでした。。 ソースを表示してデバッグをするという発想がなかったため、非常にありがたいご指摘ですm(._.)m ありがとうございます!!
m.ts10806

2019/03/23 01:54

ブラウザから確認できるのはphpではなくhtmlです。想定通りの値が入ってるかどうか、何が入ってるかは必ず確認してください。 それだけで進み具合が全く違います。 ※あと、htmlエスケープは必ずしてください
guest

回答1

0

ベストアンサー

確認画面の$_POST['hobby']には趣味が配列で入っていますが、それを次の確定画面に、hiddenで
配列を渡そうとしているからですね。

hiddenは文字列しか送れませんので、展開した文字列をhiddenに代入したらいいでしょう。

//確認画面より <input type="hidden" name="hobby" value="<?= $_POST['hobby'] ?>"> //以下のように変える <input type="hidden" name="hobby" value="<?= $hobby ?>">

そして、確定画面もimplode関数を使わず、そのまま取得します。

//確定画面 $hobby = implode('と', $_POST['hobby']); //このように変える $hobby = $_POST['hobby'];

補足ですが、混乱を防ぐために型が変わる場合は$ary_hobby $str_hobbyのように明示的に変数を命名した方がいいですよ。

投稿2019/03/23 00:56

FKM

総合スコア3624

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

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

ujinchu

2019/03/23 01:14

hiddenが文字列のみしか送れないと思いいたりませんでした…! ご丁寧に修正コードをいただきありがとうございますm(._.)m 無事に修正をすることができました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問