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

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

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

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

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

Q&A

解決済

2回答

1052閲覧

PHPで、入力内容確認画面から入力フォーム画面に戻った時、プルダウンで選択していた内容を保持したい

youna

総合スコア0

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

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

0グッド

0クリップ

投稿2021/09/15 02:35

編集2021/09/15 03:50

前提・実現したいこと

PHP7.3でSESSIONを使用した入力フォームの作成をしています。
入力内容の確認画面から、”修正する”ボタンを押下し、入力フォーム画面に戻ってきたとき、
プルダウンリストの選択内容を保持した状態で戻ってきたい。

発生している問題

$dateに”1/17(月)”、$_SESSION['receiptOn']にも同様に”1/17(月)”が入っている時でも、
下記コードでの実行結果はplaceholderに指定している”選択”が表示されてしまいます。

該当のソースコード

PHP

1<?php 2$calendar = formatDate($calendar); 3?> 4<div class="reserveContainer"> 5 <div class="reserveSubContainer"> 6 <label class="formTitle">お受け取り日</label> 7 </div> 8 <div class="reserveSubContainer"> 9 <select name="receiptOn" id="sources" class="custom-select sources" placeholder="選択"> 10 <?php 11 foreach($calendar as $key => $calArr): 12 $date = $calArr['date']; 13 ?> 14 <option value="<?php echo $date?>" <?php if($_SESSION['receiptOn'] == $date){ echo 'selected';};?>)><?php echo $date;?></option> 15 <?php endforeach;?> 16 </select> 17 </div> 18</div>

試したこと

var_dump($_SESSION['receiptOn']);
→結果は”1/17(月)”

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

HTML5
PHP7.3

補足ソースコード

PHP

1<?php 2$calendar = array( 3 '0001' => array( 4 'date' => '2022-01-17', 5 'stock' => array( 6 '1' => 0, 7 '2' => 10, 8 '3' => 0, 9 '4' => 6, 10 ), 11 ), 12 '0002' => array( 13 'date' => '2022-01-18', 14 'stock' => array( 15 '1' => 0, 16 '2' => 5, 17 '3' => 0, 18 '4' => 6, 19 ), 20 ), 21 '0003' => array( 22 'date' => '2022-01-19', 23 'stock' => array( 24 '1' => 0, 25 '2' => 10, 26 '3' => 10, 27 '4' => 5, 28 ), 29 ), 30); 31function formatDate($calendar){ 32 $week = [ 33 '日', //0 34 '月', //1 35 '火', //2 36 '水', //3 37 '木', //4 38 '金', //5 39 '土', //6 40 ]; 41 // m月d日(x)に成形 42 foreach($calendar as $dateorg => $arr){ 43 $date = date('w', strtotime($arr['date'])); 44 45 $calendar[$dateorg]['date'] = date('n/j('.$week[$date].')', strtotime($arr['date'])); 46 47 }; 48 return $calendar; 49}; 50?>

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

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

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

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

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

guest

回答2

0

代入箇所がPHPになっていないのではないでしょうか。

PHP

1?> 2$calendar = formatDate($calendar); 3```↓ 4```PHP 5$calendar = formatDate($calendar); 6?>

投稿2021/09/15 02:50

kei344

総合スコア69458

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

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

youna

2021/09/15 02:55

すみませんこちらに記載する際のコピペ漏れです。修正しました。
kei344

2021/09/15 02:59

{ echo 'selected' } の部分でエラーが出ていますが、エラーを表示する設定にはしていますか?(セミコロンが抜けている)
youna

2021/09/15 03:03

エラー出てました。。修正しましたが結果変わらずです。
kei344

2021/09/15 03:12

PHP出力結果: https://3v4l.org/gIn4Z それをHTMLで表示: https://jsfiddle.net/f3j5s8ub/ そもそもselect要素はplaceholder属性に対応していないので、他の箇所に構文エラーがあるか、Chrome/Firefox以外のブラウザが何か対応しているか、スタイル用CSSが別にあって無理やりplaceholderを表示しているとか、そのあたりではないでしょうか。 【<select>: HTML 選択要素 - HTML: HyperText Markup Language | MDN】 https://developer.mozilla.org/ja/docs/Web/HTML/Element/select
youna

2021/09/15 03:24

select要素はplaceholder属性に対応していないのですね。 placeholderと、classに当てている”custom-select sources”を外してみましたが、Chrome, FirefoxどちらともSESSIONの値を選択してくれません。 配列の最初の$dateが選択されている状態となります。
youna

2021/09/15 03:45

クラスを外す+余分な")"が入っていたので削除したところ、希望通り動きました。ありがとうございました。
guest

0

自己解決

CSSで無理やりselect要素にplaceholder属性を入れてしまっていた+余分な”)”が入ってしまっていたので、クラスを外して

php

1<option value="<?php echo $date?>" <?php if($_SESSION['receiptOn'] == $date){ echo 'selected';};?>)><?php echo $date;?></option>

<option value="<?php echo $date?>" <?php if($_SESSION['receiptOn'] == $date){ echo 'selected';};?>><?php echo $date;?></option>

に書き直した。

投稿2021/09/15 03:48

youna

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問