WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:セレクトボックス SQLと連動

0:[投稿] なり [2005/02/05 15:02 ][環境:IE6,WinXP ASP]

SQLから住所や郵便番号のテーブルを引っ張ってきて、セレクトボックスに表示させています。
ボックスは都道府県、住所1、住所2、住所3とあり、都道府県、住所1、住所2をセレクトボックスで選択させるようにしてあり、住所3をテキストボックスにしてあります。都道府県〜住所3まですべてSQLのテーブルから引っ張ってきています。
ます、都道府県を選択させて、該当するデータのみ住所1で選べるようになり、さらに住所1で選択したら、次の住所2のデータも絞り込ませて、あとの住所3はフリー入力させるようにしています。
いま、都道府県、住所1までの絞込みはできましたが、つぎ住所1を選択したあとの住所2の絞込みができません。
function refresh()
{
var coll = document.changeMc.Ken;
document.location.href="<%= Request.ServerVariables("SCRIPT_NAME") %>?selected=" + coll.options[coll.selectedIndex].value;
}

****************************************

<tr><td>都道府県</td>
<td><FORM name="changeMc" METHOD=post>
<select id=Ken name="txtMsg" onchange=refresh()>
<%

 set cn = server.createobject("ADODB.Connection")
 cn.Open "××"
 set rs = cn.execute("SELECT distinct kenCD,KEN from ken")
if not rs.EOF or not rs.BOF then
sel = rs("kenCD")
end if

do while not rs.EOF
if Request.QueryString("selected") = rs("kenCD") then
Response.Write "<option value=""" & rs("kenCD") & """ selected>" & rs("KEN") & vbcrlf
sel = rs("kenCD")
selmei = rs("KEN")
else
Response.Write "<option value=""" & rs("kenCD") & """>" & rs("KEN") & vbcrlf
end if
rs.movenext
loop

 set rs = nothing
 cn.Close    
 set cn = nothing

%>
</select>
</td></tr>

<tr><td>住所1</td>
<td>
<select id=tiku name="txtMsg2">
<%

 set cn2 = server.createobject("ADODB.Connection")
 cn2.Open "××"
 set rs2 = cn2.execute("SELECT * from tikuCD where kenCD = '" & sel & "'")
if not rs2.EOF or not rs2.BOF then
tiku = rs2("CD")
end if


do while not rs2.eof
if Request.QueryString("selected") = rs2("CD") then
Response.Write "<option value=""" & rs2("CD") & """ selected>" & rs2("J1") & vbcrlf
tiku = rs2("CD")
tikumeic = rs2("J1")
else
Response.Write "<option value=""" & rs2("CD") & """>" & rs2("J1")
end if
rs2.MoveNext
loop

 set rs2 = nothing
 cn2.Close
 set cn2 = nothing


%>
</select>

</td></tr>
<tr><td>住所2</td>
<td>
<select id=tiku2 name="txtMsg3">

<%
 set cn3 = server.createobject("ADODB.Connection")
 cn3.Open "××"
 set rs3 = cn3.execute("SELECT * from yubinNo where CD = '" & tiku & "'")


do while not rs3.eof
Response.Write "<option value=""" & rs3("CD") & """>" & rs3("J2")
 yubinnum = rs3("YUBIN")
 yubinmei = rs3("J2")

rs3.MoveNext
loop

 set rs3 = nothing
 cn3.Close    
 set cn3 = nothing


%>
</td></tr>
<tr><td>住所3</td>
<td><input type=text value="" id=tiku3 name=txtMsg4 STYLE="ime-mode:active" size=40>

現在上のようなコードで止まっています。
住所2のセレクトボックのonchangeでイベントを起こさないといけないとは思うのですが、都道府県のセレクトボックと住所1のセレクトボックスを保持させるのはどうすればいいのかわかりません。
お手数とは思いますが、ご教授お願いいたします。


1:[回答] 森田 [2005/02/06 07:26 ]

function refresh(EventSource)
{
 var coll = document.changeMc.Ken;
 var newURL = "<%= Request.ServerVariables("SCRIPT_NAME") %>?Ken=" + coll.options[coll.selectedIndex].value;
 if (coll != EventSource) {
   coll = document.changeMc.tiku;
   newURL += "&tiku=" + coll.options[coll.selectedIndex].value;
 }
 document.location.href = newURL;
}

として、Kenとtikuのselectに onChange="refresh(this)"
Request.QueryString("Ken") に都道府県の選択内容が、
地区が選択されている場合には Request.QueryString("tiku")
にその選択内容が入るかと思います。(未確認)

郵便番号がデータベースに入ってるなら、それを入力して
もらった方が手っ取り早いのでは、とちょっと思いました。


2:[質問] なり [2005/02/07 09:34 ]

回答ありがとうございました。
でも出来ませんでした。
リフレッシュされて、県を選択しても市区町村を選択しても、結局もともと選択前に表示していた、北海道にもどってしまいます。

どこを修正したらよいでしょうか?
お手数かけます。


3:[回答] 森田 [2005/02/07 14:14 ]

都道府県の方のループで
if Request.QueryString("Ken") = rs("kenCD") then
 Response.Write "<option value=""" & rs("kenCD") & """ selected>" & rs("KEN") & vbcrlf
else
 Response.Write "<option value=""" & rs("kenCD") & """>" & rs("KEN") & vbcrlf
end if

住所1のループで
if Request.QueryString("tiku") = rs("CD") then
 Response.Write "<option value=""" & rs("CD") & """ selected>" & rs("J1") & vbcrlf
else
 Response.Write "<option value=""" & rs("CD") & """>" & rs("J1") & vbcrlf
end if

とかでしょうか。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World