質問編集履歴

1

質問の修正

2021/12/12 06:20

投稿

mikiko.s
mikiko.s

スコア14

test CHANGED
@@ -1 +1 @@
1
- 2つのプルダウンを連動させたい
1
+ 路線名と駅名のプルダウンを連動させたい
test CHANGED
@@ -1,4 +1,4 @@
1
- CMSを作っており、路線と駅名のプルダウンを連動させたいと考えています。
1
+ CMSを作っており、路線と駅名のプルダウンを連動させたいと考えています。
2
2
 
3
3
  路線を選んだら、その路線の駅名を表示させるようにしたいです。
4
4
 
@@ -6,11 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- 現在、全ての駅名が表示されています。
10
-
11
-
12
-
13
- ソースを書かせていただきます。
9
+ 現在のソースを書かせていただきます。
14
10
 
15
11
 
16
12
 
@@ -42,29 +38,73 @@
42
38
 
43
39
 
44
40
 
45
- <select name="station1">
46
41
 
47
- <option value="">-----駅を選択-----</option>
48
42
 
49
- <?
50
43
 
51
- $recordSet_St=mysqli_query($conn,"SELECT * FROM station");
52
44
 
53
- while($St = mysqli_fetch_assoc($recordSet_St)){
45
+ <select id="station1"><option value="">-----駅を選択-----</option></select>
54
46
 
55
- $STATION1_CD=htmlspecialchars($St['station_cd']);
47
+ <script>
56
48
 
57
- $STATION1=htmlspecialchars($St['station_name']);
49
+ var array = new Array();
58
50
 
59
- $STATION1_LINE_CD=htmlspecialchars($St['line_cd']);
51
+ array[''] = new Array({cd:"0", label:"-----駅を選択-----"});
60
52
 
61
- ?>
53
+ array["11603"] = new Array(
62
54
 
63
- <option value="<?=$STATION1_LINE_CD?>"><?=$STATION1?></option>
55
+ {cd:"1160301", label:"大阪"},
64
56
 
65
- <?}?>
57
+ {cd:"1160308", label:"甲南山手"},
66
58
 
59
+ {cd:"1160309", label:"摂津本山"},
60
+
61
+ {cd:"1160310", label:"住吉"},
62
+
63
+ {cd:"1160311", label:"六甲道"}
64
+
65
+ );
66
+
67
+ array["34001"] = [
68
+
69
+ {cd:"3400101", label:"大阪梅田"},
70
+
71
+ {cd:"3400102", label:"中津"},
72
+
73
+ {cd:"3400111", label:"岡本"},
74
+
75
+ {cd:"3400112", label:"御影"},
76
+
77
+ {cd:"3400113", label:"六甲"}
78
+
79
+ ];
80
+
81
+ document.getElementById('line1').onchange = function(){
82
+
83
+ station1 = document.getElementById("station1");
84
+
85
+ station1.options.length = 0
86
+
87
+ var changedPref = line1.value;
88
+
89
+ for (let i = 0; i < array[changedPref].length; i++) {
90
+
91
+ var op = document.createElement("option");
92
+
93
+ value = array[changedPref][i]
94
+
95
+ op.value = value.cd;
96
+
97
+ op.text = value.label;
98
+
99
+ station1.appendChild(op);
100
+
101
+ }
102
+
103
+ }
104
+
67
- </select>
105
+ </script>
106
+
107
+
68
108
 
69
109
 
70
110
 
@@ -74,8 +114,30 @@
74
114
 
75
115
 
76
116
 
77
- 2つ目プルダウンジャバスクリプトを使う方法あるなど
117
+ 上記ソース、一旦試しで書いてみたのですが、
78
118
 
79
- 調べているところではあるのですがご教示いだけまと幸いです。
119
+ ジャバスクリプトで、データベースから引っ張ってきデータを繰り返
80
120
 
121
+ 書き方をご教示いただけないでしょうか。
122
+
123
+
124
+
125
+ array["路線コード1"] = [
126
+
127
+ {cd:"駅コード1", label:"駅名1"},
128
+
129
+ {cd:"駅コード2", label:"駅名2"},
130
+
131
+ ];
132
+
133
+ array["路線コード2"] = [
134
+
135
+ {cd:"駅コード1", label:"駅名1"},
136
+
137
+ {cd:"駅コード2", label:"駅名2"},
138
+
139
+ ];
140
+
81
- ぞよろくお願いたします。
141
+ といふうに繰り返す。
142
+
143
+ (上記のソースでは、駅のデータベースからデータを取得する記述はまだ書いていません)