実際に Web サーバ上で動く例は こちら です(別ウィンドウが開きます。なお、Web サーバが停止していることもあります)。
<% Const datasource = "DSN=prefcity" %> |
| prefcity.zipをダウンロード後、展開すると prefcity.mdb が得られます。 |
<HTML> <HEAD> <META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=Shift_JIS"> <TITLE>SELECT タグの連動 (オンデマンドでサーバサイドと FRAME でやりとり)</TITLE> </HEAD> <FRAMESET FRAMEBORDER=0 ROWS="100%,*"> <FRAME SRC=framemaindb.asp NAME=mymain NORESIZE> <FRAME SRC=framesubdb.asp NAME=mysub NORESIZE> </FRAMESET> </HTML> |
<%@Language=VBScript EnableSessionState=False%><%Option Explicit
Function HTMLEncode(ByVal s)
s = Replace(s, "&", "&")
s = Replace(s, """", """)
s = Replace(s, "<", "<")
s = Replace(s, ">", ">")
HTMLEncode = s
End Function
%><!-- #include file = "datasource.asp" --><OBJECT ID=adoConn PROGID="ADODB.Connection" RUNAT=Server SCOPE=Page>
</OBJECT><HTML>
<HEAD>
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=Shift_JIS">
<TITLE>メイン</TITLE>
<SCRIPT LANGUAGE=JavaScript>
<!--
function funcSubmit() {
if (document.formMain.pref.selectedIndex == 0 && document.formMain.city.selectedIndex == 0) {
window.alert("都道府県と市町村を選択してください");
return false;
} else if (document.formMain.pref.selectedIndex == 0) {
window.alert("都道府県を選択してください");
return false;
} else if (document.formMain.city.selectedIndex == 0) {
window.alert("市町村を選択してください");
return false;
} else {
return true;
}
}
function funcMain(b) {
if (document.formMain.pref.selectedIndex == 0) {
document.formMain.city.length = 1;
document.formMain.city.selectedIndex = 0;
} else {
if (b) {
document.formMain.city.length = 1;
document.formMain.city.selectedIndex = 0;
}
document.formHidden.pref.value = document.formMain.pref.options[document.formMain.pref.selectedIndex].value;
document.formHidden.submit();
}
}
// -->
</SCRIPT>
</HEAD>
<BODY onLoad="funcMain(false)">
<FORM NAME=formMain TARGET="_parent" METHOD=POST ACTION=resultdb.asp onSubmit="return funcSubmit()">
<SELECT NAME="pref" onChange="funcMain(true)">
<OPTION VALUE="" SELECTED>(都道府県を選択してください)<%
Call adoConn.Open(datasource)
Dim adoRs
Set adoRs = adoConn.Execute("SELECT prefid, prefname FROM preftable ORDER BY prefid")
Do Until adoRs.EOF
%>
<OPTION VALUE="<%=adoRs.Fields("prefid").Value%>"><%=HTMLEncode(adoRs.Fields("prefname").Value)%>
<%
Call adoRs.MoveNext()
Loop
Call adoRs.Close()
%>
</SELECT>
<SELECT NAME="city">
<OPTION VALUE="" SELECTED>(市町村を選択してください)
<OPTION VALUE="">
<OPTION VALUE="">
<OPTION VALUE="">
<OPTION VALUE="">
<OPTION VALUE="">
<OPTION VALUE="">
<OPTION VALUE="">
</SELECT>
<INPUT TYPE=submit VALUE="登録">
</FORM>
<FORM NAME=formHidden TARGET="mysub" METHOD=GET ACTION=framesubdb.asp>
<INPUT TYPE=hidden NAME=pref>
</FORM>
</BODY>
</HTML>
|
<%@Language=VBScript EnableSessionState=False%><%Option Explicit%><!-- #include file = "datasource.asp" --><OBJECT ID=adoConn PROGID="ADODB.Connection" RUNAT=Server SCOPE=Page>
</OBJECT>
<%
Function strJS(ByVal s)
Dim x
x = Replace(s, "\", "\\")
Dim y
y = Replace(x, """", "\""")
strJS = y
End Function
%><HTML>
<HEAD>
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=Shift_JIS">
<TITLE>サブ</TITLE>
<SCRIPT LANGUAGE=JavaScript>
<!--
function funcSub() {
<%
Dim pref
pref = Request.QueryString("pref")
If IsEmpty(pref) Then
ElseIf Not IsNumeric(pref) Then
Else
Call adoConn.Open(datasource)
Dim adoRs
Set adoRs = adoConn.Execute("SELECT cityid, cityname FROM citytable WHERE prefid = " & pref & " ORDER BY cityid")
Dim i
i = 0
Dim cityid()
Dim cityname()
Do Until adoRs.EOF
ReDim Preserve cityid(i)
cityid(i) = adoRs.Fields("cityid").Value
ReDim Preserve cityname(i)
cityname(i) = adoRs.Fields("cityname").Value
Call adoRs.MoveNext()
i = i + 1
Loop
Dim c
c = i
Call adoRs.Close()
Call adoConn.Close()
%> parent.mymain.document.formMain.city.options.length = <%=c + 1%>;
<%
For i = 0 To c - 1
%> parent.mymain.document.formMain.city.options[<%=i + 1%>].value = "<%=cityid(i)%>";
parent.mymain.document.formMain.city.options[<%=i + 1%>].text = "<%=strJS(cityname(i))%>";
<%
Next
End If
%>}
// -->
</SCRIPT>
</HEAD>
<BODY onLoad="funcSub()">
</BODY>
</HTML>
|
<%@Language=VBScript EnableSessionState=False%><%Option Explicit
Function HTMLEncode(ByVal s)
s = Replace(s, "&", "&")
s = Replace(s, """", """)
s = Replace(s, "<", "<")
s = Replace(s, ">", ">")
HTMLEncode = s
End Function
%><!-- #include file = "datasource.asp" --><OBJECT ID=adoConn PROGID="ADODB.Connection" RUNAT=Server SCOPE=Page>
</OBJECT><HTML>
<HEAD>
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=Shift_JIS">
<TITLE>結果</TITLE>
</HEAD>
<BODY>
<%
Dim pref
pref = Request.Form("pref")
Dim city
city = Request.Form("city")
Dim b
b = False
If IsEmpty(pref) Then
ElseIf Not IsNumeric(pref) Then
ElseIf IsEmpty(city) Then
ElseIf Not IsNumeric(city) Then
Else
b = True
End If
If b Then
Call adoConn.Open(datasource)
Dim adoRs
Set adoRs = adoConn.Execute("SELECT prefname, cityname FROM preftable INNER JOIN citytable ON preftable.prefid = citytable.prefid WHERE preftable.prefid = " & pref & " AND cityid = " & city)
If adoRs.EOF Then
%>エラー
<%
Else
%>都道府県: <%=HTMLEncode(adoRs.Fields("prefname").Value)%><BR>
市町村: <%=HTMLEncode(adoRs.Fields("cityname").Value)%><BR>
<%
End If
Call adoRs.Close()
Call adoConn.Close()
End If
%></BODY>
</HTML>
|