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

Soyez le premier à donner votre avis sur cette source.

Vue 14 143 fois - Téléchargée 594 fois

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

Ajouter un commentaire

Commentaires

qm011050
Messages postés
1
Date d'inscription
mercredi 21 avril 2004
Statut
Membre
Dernière intervention
28 février 2005

pol18
Messages postés
2
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
16 juin 2003

Pour que ça marche sous Netscape (on m'a aidé sur d'autres forums...) remplacer le javascript du début par ça :
<script language="JavaScript">
Function Val_Recherche()
{
document.rechercheform.submit();
}
</script>

Chez moi ça marche
pol18
Messages postés
2
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
16 juin 2003

Il marche très bien sous IE ce code... Mais pour Netscape, le deuxième combo box ne se réinitialise pas... quel dommage!!!
Trop cool
ca fait pas mal de temps que je m'agace à faire cette manip
Vraiment Merçi pour cette précieuse aide
a+++
Et bonne continuation
Le site et les sources sont nikel.

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.