回答編集履歴

1

加筆

2022/07/20 02:19

投稿

退会済みユーザー
test CHANGED
@@ -1,9 +1,17 @@
1
1
  POST受信を受けて表示したページのhtmlソースコードを確認してみてください。
2
- おそらく、option全てに selected がついているのではないでしょうか。
2
+ おそらく、option要素全てに selected がついているのではないでしょうか。
3
3
 
4
- selectによる選択がされると、
4
+ select要素による選択がされると、
5
- 選択されたoptionのvalue値がselectのnameとペアになって送信されます。
5
+ 選択されたoption要素のvalue値がselect要素のname属性の値とペアになって送信されます。
6
6
  その理屈がわかっていれば、
7
7
  フォーム受信した `$_POST['prefectures']` の値と、
8
8
  用意してある都道府県データとの比較をして一致したときのみ selected を出力するような
9
9
  制御をすればいいのです。
10
+
11
+ 質問文中のコードでは、
12
+ `if (isset($_POST['prefectures']))`によってフォーム受信したかどうかの判定はありますが、
13
+ `$_POST['prefectures']`と`$prefecture`が一致するかどうかの判定がありません。
14
+
15
+ なお、option要素のvalue属性に、h関数で加工したデータを詰めるのはやめるべきかと。
16
+ h関数の目的は、htmlコード内で正しく文字列を表示するためのものなので、
17
+ value属性に詰めるところでは生のままで良いです。