Formulaire avec 2 combos box dont la 2ème est initialisée selon la sélection effectuée dans la première. Les données proviennent d'une BDD.
Source / Exemple :
<html>
<head>
<base target="milieu">
</head>
<script language="JavaScript">
function Val_Recherche()
{
rechercheform.submit();
}
</script>
<%
'Ouverture de la bdd
Set conn = Server.CreateObject("ADODB.Connection")
'Document est la source ODBC à créer sur le poste ou le serveur.
conn.open "Document","",""
Set Doc_conn = conn
dim sql
dim NoSousTheme, NoTheme
if (request("Theme")<>"") then
NoTheme = cint(request("Theme"))
else
NoTheme = 0
end if
if (request("SousTheme")<>"") then
NoSousTheme = cint(request("SousTheme"))
else
NoSousTheme = 0
end if
'Recordsert permettant de compléter les combobox.
dim rsTheme, rsSousTheme
Set rsTheme=Server.CreateObject ("ADODB.Recordset")
rsTheme.Open "T_THEME", Doc_conn, 1, 2 ,2
'Sélection des sous-thême lié au thême sélectionné
sql = "SELECT * FROM T_SOUSTHEME WHERE STH_NoTheme = " & NoTheme
Set rsSousTheme = Doc_conn.Execute (sql)
%>
<body leftmargin="0" topmargin="0">
<form name="rechercheform">
<table border="0" width="528">
<tr>
<td valign="middle" height="22" width="59">Thème</td>
<td valign="top" height="22" width="191"><font face="Arial" size="1">
<select size="1" name="Theme" OnChange="rechercheform.target='_self';rechercheform.action='Theme.asp';Val_Recherche();">
<option selected value=""></option>
<%
if not (rsTheme.eof) then
rsTheme.movefirst
do while not(rsTheme.eof)
if rsTheme.fields("THE_NoTheme")= NoTheme then%>
<option value="<%=rsTheme.fields("THE_NoTheme")%>" selected><font face="Arial" size="1"><%=rsTheme.fields("THE_Libelle")%></font></option>
<%else%>
<option value="<%=rsTheme.fields("THE_NoTheme")%>"><font face="Arial" size="1"><%=rsTheme.fields("THE_Libelle")%></font></option>
<%end if
rsTheme.movenext
loop
end if
rsTheme.close
set rsTheme = nothing
%>
</select>
</font></td>
<td valign="middle" height="22" width="82">Sous-thème</td>
<td valign="top" height="22" width="178"><font face="Arial" size="1">
<select size="1" name="SousTheme">
<option selected value=""></option>
<%
if not (rsSousTheme.eof) then
rsSousTheme.movefirst
do while not(rsSousTheme.eof)
if rsSousTheme.fields("STH_NoSousTheme")=NoSousTheme then%>
<option value="<%=rsSousTheme.fields("STH_NoSousTheme")%>" selected><font face="Arial" size="1"><%=rsSousTheme.fields("STH_Libelle")%></font></option>
<%else%>
<option value="<%=rsSousTheme.fields("STH_NoSousTheme")%>"><font face="Arial" size="1"><%=rsSousTheme.fields("STH_Libelle")%></font></option>
<%end if
rsSousTheme.movenext
loop
end if
rsSousTheme.close
set rsSousTheme = nothing
%>
</select>
</font></td>
</tr>
</table>
<%
Doc_conn.close
Set Doc_conn=nothing
%>
</form>
</body>
</html>
Conclusion :
A chaque modification de la première combo box, une requête est effectuée pour actualiser la seconde.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.