こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

入力確認画面の表示 選択式のものが表示されません。

入力フォームに入力した情報を入力確認画面で表示について。
HPで入力フォーム→入力確認画面の表示をしたいのですが、
【書いたコードは下のURL内にあります。HTMLとphpファイル】

書き方は下のURL(1)のサイトに載っている書き方と全く同じコードを書いているのですが(少し変えてますが)
(1)https://www.web-officer.com/php/how-to-make-inquiry-form.php

入力フォームに入力した情報を confirmation phpファイルの
value=" ”の中に <?=$name;?>を入れる方法で確認表示画面で情報を表示できました。

しかし、クレジットカードの選択の情報だけ確認表示画面で情報が表示されませんでした。
confirmation phpのファイルの中のコード(入力ホームの一番下にある支払い方法を選択する欄があるのですが、以下コードになります。

<p>決済方法</p>
<select name="pay" id="pay" class="auto-style3" style="width: 282px; height: 38px;">
<option value=""></option>
<option value="クレジットカード">クレジットカード</option>


<option value=""></option> の" "の間に "<?=$pay;?> を同じように書いてみたのですが、確認表示画面にはクレジットカードの選択情報だけ表示されません。

選択式の場合はまた仕組みが違うのでしょうか?
確認画面に表示させるにはどうしたらよいでしょうか?

送付写真のように確認表示画面の際、決済方法だけ空欄で表示されてしまいます。

先に進めず困っています。詳しい方回答、よろしくお願いいたします。


ベースファイル「contact htmlファイル」入力フォーム
https://drive.google.com/file/d/1DfZ_0Vg0xA0RfhHd9gOCQMaoMfuuZRz3/view?usp=sharing

「comfirmation phpファイル」入力確認画面の表示
https://drive.google.com/file/d/14pM7I21JA62AeWsm0XQX7eN2BP3UjLde/view?usp=sharing

大変申し訳ございませんが、この投稿に添付された画像や動画などは、「BIGLOBEなんでも相談室」ではご覧いただくことができません。 OKWAVEよりご覧ください。

マルチメディア機能とは?

投稿日時 - 2020-05-18 18:06:04

QNo.9750194

すぐに回答ほしいです

質問者が選んだベストアンサー

今思ったんですが。
そもそも「確認画面で選択肢がある必要はない」
ので、selectなしで、
直echoでよくないですか?どうせ、選べないんだし。。
↑最終的にこれが一番正しい気がしてきた(w)

投稿日時 - 2020-05-18 18:31:35

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

参考演算子を使ってシンプルにループ部を
<option value="<?= $index ?>" <?php $card===1? ' selected':''; ?>><?= $one ?></option>';
とまとめることもできます。
読みやすいと感じる方をどうぞ。
先ほどのサンプルvalueに$indexを入れるのを忘れてました^^

投稿日時 - 2020-05-18 18:28:31

ANo.2

<option value="選択されていない">違う</option>
<option value="選択されている" selected>こっち</option>

という感じで選択されている場所にselectedを付与する形になります。

投稿日時 - 2020-05-18 18:24:58

もしかして最近私ばっかり回答してる?
https://www.tagindex.com/html_tag/form/select.html
このサイト中で重要な部分を抜粋。
<select name="example">
<option value="サンプル1">サンプル1</option>
<option value="サンプル2">サンプル2</option>
<option value="サンプル3">サンプル3</option>
</select>
大事なのは「selected値は不要選択された状態を指定」この部分。
上のサンプルでは、値としても"サンプル1"が送られてますが、
これでは、バリデーションしにくいので

<select name="card">
<option value="1">サンプル1</option>
<option value="2">サンプル2</option>
<option value="3">サンプル3</option>
</select>
としつつ
$card=(int)$_POST['card']; /* 変数の有無チェックは別途やってください */
<option value="1">サンプル1</option>
これを送り出すとき、
if ($card===1) echo '<option value="1" selected>サンプル1</option>';
else echo '<option value="1">サンプル1</option>';
のように、選んだものが「デフォルトになるようにする」でOKです。
実際には、どれもないとき先頭がONになることを利用して、
$card_list=[
"どれも選んでいないときの、名称",
"カードの名前1",
"カードの名前2",
"カードの名前3",
];
とでもしておいて
$card=(int)$_POST['card']; /* 変数の有無チェックは別途やってください */
$index=0;
foreach ($card_list as $one) {
echo echo '<option value="1"';
if ($card===$index) {
echo ' selected';
}
echo '>'.$one.'</option>';
 $index++;
}
/*
* 結局インデックスを回してる関係で、
* for ($index=0;$index<count($card_list);$index++) ///
* これでも構わない。
* これを使わない理由は、count( )が相手が変化するものだった場合に、
* おかしくなるためで、今回は変化しないので、
* それほど気にしなくてもOKです
*/
これで、選んでいれば、それが出て、選んでいなければ、
先頭の「"どれも選んでいないときの、名称"」が表示されるので、
バリデーションチェックもしやすいかと思います。
0か?だけをチェックするだけで、selectで選んだかがわかるので。

後、この手の選択肢のファイルを別のPHPに入れて、
include や requireで共通化すればよいかと!。
→表示部と、確認部などで。

ちなみ、私書いてるの、わかりにくそうでしたら、指摘を!

投稿日時 - 2020-05-18 18:24:38

あなたにオススメの質問