JSP+JavaScript crée un menu déroulant en cascade de deuxième niveau :
class (informations sur la colonne de premier niveau) : classId (numérotation automatique), className (nom de la colonne), Nclass (informations sur la colonne secondaire), NclassId (numérotation automatique), NclassName ( nom de la colonne), parentId (identifiant de la colonne de premier niveau, associé à classId dans la table de classe)
<%@ page contentType=text/html; charset=GB2312 language=java errorPage=../error.jsp %>
<%@include file=../conn.jsp%>
<%@include file=../ds.jsp%>
<%@ taglib uri=http://java.sun.com/jsp/jstl/sql divfix=sql %>
<%request.setCharacterEncoding(gb2312) ;
<HTML><TÊTE>
<META http-equiv=Content-Type content=text/html; charset=gb2312>
<TITLE>Menu en cascade</TITLE>
<LIEN rel=stylesheet type=text/css href=style.css>
</HEAD>
<!--Obtenir les informations sur les colonnes secondaires de la base de données-->
<%String sql=select * from Nclass order by NclassId asc ;
ResultSet rs=stmt.executeQuery(sql);
%>
<!--Enregistrez les informations de la colonne secondaire dans le sous-cat du tableau-->
<type de script=texte/javascript>
var un compte ;
un compte = 0 ;
sous-cat = nouveau tableau ();
<%
nombre entier = 0 ;
tandis que(rs.next()){
%>
subcat[<%=count%>] = nouveau tableau(<%=rs.getString(NclassName)%>,
<%=rs.getString(NclassId)%>,<%=rs.getString(parentId)%>);
<%
compte++;
}
rs.close();
%>
onecount=<%=count%>;
<!--Fonction qui détermine l'affichage sélectionné-->
fonction changement d'emplacement (locationid)
{
document.myform.NclassId.length = 0;
var locationid=locationid;
var je;
pour (i=0;i < onecount; i++)
{
if (subcat[i][2] == emplacementid)
{
document.myform.NclassId.options[document.myform.NclassId.length] = nouveau
Option(sous-cat[i][0], sous-cat[i][1]);
}
}
}
</script>
<FORM method=POST name=myform action=adminsave.jsp?action=add>
<TABLE>
<TR>
<TD>Classement de premier niveau</TD>
<TD>
<SELECT name=classId onChange=changelocation(document.myform.classId.options
[document.myform.classId.selectedIndex].value) size=1>
<OPTION valeur sélectionnée>==Veuillez sélectionner une catégorie de premier niveau==</OPTION>
<sql:query var=query dataSource=$>
SELECT * FROM classe
</sql:requête>
<c:forEach var=éléments de ligne=$>
<valeur d'option=$>$</option>
</c:forEach>
</sélectionner>
</TD>
<TD>Sélectionner une catégorie secondaire</TD>
<TD>
<SELECT nom=NclassId>
<OPTION valeur sélectionnée>==Veuillez sélectionner la catégorie de deuxième niveau==</OPTION>
</SELECT>
</TD>
</TR>
</TABLE>
</FORM>
</CORPS>
</HTML>
<%@ page contentType=text/html; charset=GB2312 language=java errorPage=../error.jsp %>
<%@include file=../conn.jsp%>
<%@include file=../ds.jsp%>
<%@ taglib uri=http://java.sun.com/jsp/jstl/sql divfix=sql %>
<%request.setCharacterEncoding(gb2312) ;
<HTML><TÊTE>
<META http-equiv=Content-Type content=text/html; charset=gb2312>
<TITLE>Menu en cascade</TITLE>
<LIEN rel=stylesheet type=text/css href=style.css>
</HEAD>
<!--Obtenir les informations sur les colonnes secondaires de la base de données-->
<%String sql=select * from Nclass order by NclassId asc ;
ResultSet rs=stmt.executeQuery(sql);
%>
<!--Enregistrez les informations de la colonne secondaire dans le sous-cat du tableau-->
<type de script=texte/javascript>
var un compte ;
un compte = 0 ;
sous-cat = nouveau tableau ();
<%
nombre entier = 0 ;
tandis que(rs.next()){
%>
subcat[<%=count%>] = nouveau tableau(<%=rs.getString(NclassName)%>,
<%=rs.getString(NclassId)%>,<%=rs.getString(parentId)%>);
<%
compte++;
}
rs.close();
%>
onecount=<%=count%>;
<!--Fonction qui détermine l'affichage sélectionné-->
fonction changement d'emplacement (locationid)
{
document.myform.NclassId.length = 0;
var locationid=locationid;
var je;
pour (i=0;i < onecount; i++)
{
if (subcat[i][2] == emplacementid)
{
document.myform.NclassId.options[document.myform.NclassId.length] = nouveau
Option(sous-cat[i][0], sous-cat[i][1]);
}
}
}
</script>
<FORM method=POST name=myform action=adminsave.jsp?action=add>
<TABLE>
<TR>
<TD>Classement de premier niveau</TD>
<TD>
<SELECT name=classId onChange=changelocation(document.myform.classId.options
[document.myform.classId.selectedIndex].value) size=1>
<OPTION valeur sélectionnée>==Veuillez sélectionner une catégorie de premier niveau==</OPTION>
<sql:query var=query dataSource=$>
SELECT * FROM classe
</sql:requête>
<c:forEach var=éléments de ligne=$>
<valeur d'option=$>$</option>
</c:forEach>
</sélectionner>
</TD>
<TD>Sélectionner une catégorie secondaire</TD>
<TD>
<SELECT nom=NclassId>
<OPTION valeur sélectionnée>==Veuillez sélectionner la catégorie de deuxième niveau==</OPTION>
</SELECT>
</TD>
</TR>
</TABLE>
</FORM>
</CORPS>
</HTML>