WEB相談室

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

タイトル:2つのセレクトボックスを連動させる

0:[投稿] ムラタ [2004/01/08 17:58 ][環境:IE6,WIN2000 WIN2000Server]

初めての投稿です。
過去ログ検索したのですが、わからなかったので
投稿させて頂きます。
初心者なので質問の不備等あるかと思いますが
ご教授の程よろしくお願いします。

2つのセレクトボックスがあり
片方のセレクトボックスが選択された時、
もう片方のセレクトボックスの内容を編集したいのですが
選択されたセレクトボックスの値をSQL命令のWHERE条件に
入れることが出来ません。
どうやって入れたらいいのか悩んでいるところです。

一応現在のソースを書いておきます。
***の印がついている所です。


<%@ Language=VBScript %>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<SCRIPT ID=clientEventHandlersJS LANGUAGE=javascript>

function window_onload() {
<%'
   set conn=Server.CreateObject("ADODB.Connection")
   conn.open "XXX","XXX","XXX"

   Sql = " Select CD1 From Table1 "
   set rs=conn.execute(sql)

   intCnt = 0
   do while not rs.eof
       intCnt = intCnt + 1
%>
       form01.Comb1.options[<%=intCnt%>] = new Option("<%=rs("CD1")%>");
<%
       rs.movenext
   Loop

   rs.close()
   set rs=nothing
   conn.close()
   set conn=nothing
%>}

function Comb1_onchange() {

   ***ここで取得したComb1のコードを
   W_CD = document.form01.Comb1.options[document.form01.Comb1.selectedIndex].text;

<%
   set conn=Server.CreateObject("ADODB.Connection")
   conn.open "XXX","XXX","XXX"

   Sql = " SELECT CD2  FROM Table2 "
   Sql = Sql&" WHERE CD1 = '" & W_CD & "'"  ***ここで使いたい
   set rs=conn.execute(sql)

   intCnt = 0
   do while not rs.eof
       intCnt = intCnt + 1
%>
       form01.Comb2.options[<%=intCnt%>] = new Option("<%=rs("CD2")%>");
<%
       rs.movenext
   Loop

   rs.close()
   set rs=nothing
   conn.close()
   set conn=nothing
%>}
</SCRIPT>
</HEAD>

<FORM NAME="form01" >
<BODY bgColor=#90dfc0 LANGUAGE=javascript onload="return window_onload()"><FONT face="MS Pゴシック" >

<table class=p border=0 cellspacing=0 cellpadding=1 width="75%">
<TR><TD>CD1</TD>
<TD><SELECT id=CD1 style="WIDTH: 92px" name=CD1 onchange="return Comb1_onchange()">
</SELECT></TD></TR>

<TR><TD>CD2</TD>
<TD><SELECT id=CD2 style="WIDTH: 92px" name=CD2></SELECT></TD>
</table>
</FORM>
</BODY>
</HTML>

以上、宜しくお願いします。


1:[回答] 岩本隆史 [MAIL] [URL] [2004/01/09 02:09 ]

「選択されたセレクトボックスの値をSQL命令のWHERE条件に入れる」には以下のようにします。

  1. CD1のonchangeイベント発生時にフォームをsubmitさせる
  2. SQL文の作成時にRequest.Form("CD1")の値を使う

ただ、CD1の変更時に必ずSQLを実行しなければならないかどうかは一考に値します。Table2の内容をSCRIPT要素内に(配列等として)書き出しておくことができるからです。


2:[保留] ムラタ [2004/01/09 10:31 ]

岩本隆史さん
回答有難う御座います。

早速試して結果を報告させて頂きます。

また
>Table2の内容をSCRIPT要素内に(配列等として)書き出しておく
につきましては、現状の私では実現に時間が掛かってしまうかと
思われますので、今後の課題とさせて頂きます。


3:[完了] ムラタ [2004/01/13 17:08 ]

>1. CD1のonchangeイベント発生時にフォームをsubmitさせる
>2. SQL文の作成時にRequest.Form("CD1")の値を使う
の手法で実現できました。

岩本隆史さん 有難う御座いました。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World