2 combos box liées à une bdd avec dépendance

Description

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.

Codes Sources

A voir également

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.