回答編集履歴
1
加筆
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属性に詰めるところでは生のままで良いです。
|