filtrar combos

gustavo
03 de Mayo del 2002
por favor si alguien me puede explicar como ir filtrando los items de los combos.
es decir si tengo 3 combos, al elegir una opcion del primero, en el segundo me aparecen lo items relacionados y asi sucesivamente

gracias

a
03 de Mayo del 2002
a

fabio
03 de Mayo del 2002
lo estoy haciendo como lo describes, lo que hago son sentencias sql y voy filtrando la info segun que diga el usuario, lo debo tener listo en un para de dias, te lo paso con todo gusto

gustavo
03 de Mayo del 2002
ok, gracias, yo el problema que tengo, es como llamar nuevamente a la pagina, para cargar el segundo combo, segun la opcion del primero, ya que intento hacerlo con un redirect.
Bueno, espero ver como lo resolviste

saludos

gustavo
03 de Mayo del 2002
hice 2 versiones, pero las dos tienen problemas
en esta tengo 2 funciones(son iguales solo cambia el nombre del combo y deberia cambiar la consulta (ese es el problema, si pongo otra consulta, no funciona)
en la segunda quize hacer una sola funcion con parametros (mas logico, no ?)

PRIMERA:


<%@ Language=VBScript %>

<%option explicit %>

<HTML>

<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>


<BODY>
<%
dim Con
dim Cone
dim rsSedes
dim rs
dim rsCarreras
dim rsAlumnos
dim Sede_Id
dim Sede_Des
dim ssql
dim myid
%>


<script language="javaScript">

<%
'Creo y habro la tabla
set Con = server.CreateObject ("adodb.connection")
con.ConnectionString ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & Server.MapPath("universidad.mdb")
con.Open
%>


function CargarLista2 (idlista, combo)
{
if (combo=='car') cargarcarreras(idlista)
if (combo=='alu') cargaralumnos(idlista)
}


function cargarcarreras(myitem)
{
<%
ssql="SELECT * FROM carreras, sedes WHERE carreras.sed_id=sedes.sed_id and carreras.sed_id=11"

'Creo y habro el recorset de carreras
set rsSedes = server.CreateObject ("adodb.recordset")
rsSedes.Source = ssql
rsSedes.ActiveConnection = Con
rsSedes.CursorType = 3
rsSedes.LockType = 3
rsSedes.Open

if not rsSedes.eof then
%>
document.forms.formulario.lstcarrera4.length=0;
count=0;
opcion0=new Option("todas","0");
document.forms.formulario.lstcarrera4.options[0]=opcion0;
<%
do while not rsSedes.eof
%>
des="<%=rsSedes.fields("Car_Descripcion")%>";
id="<%=rsSedes.fields("Car_Id")%>";
count=count+1;
newopcion=new Option(des,id);
document.forms.formulario.lstcarrera4.options[count]=newopcion;
<%
rsSedes.movenext
loop
else
%>
document.forms.formulario.lstcarrera4.length=0;
<%
end if
rsSedes.close
'con.close
set rsSedes=nothing
'set con=nothing
%>
}


function cargaralumnos(myitem)
{
<%

ssql="SELECT * FROM alumnos"

'Creo y habro el recorset de carreras
set rsSedes = server.CreateObject ("adodb.recordset")
rsSedes.Source = ssql
rsSedes.ActiveConnection = Con
rsSedes.CursorType = 3
rsSedes.LockType = 3
rsSedes.Open

if not rsSedes.eof then
%>
document.forms.formulario.lstalumno.length=0;
count=0;
opcion0=new Option("todas","0");
document.forms.formulario.lstalumno.options[0]=opcion0;
<%
do while not rsSedes.eof
%>
des="<%=rsSedes.fields("alu_Nombre")%>";
id="<%=rsSedes.fields("Alu_Id")%>";
count=count+1;
newopcion=new Option(des,id);
document.forms.formulario.lstalumno.options[count]=newopcion;
<%
rsSedes.movenext
loop
else
%>
document.forms.formulario.lstalumno.length=0;
<%
end if
rsSedes.close
'con.close
set rsSedes=nothing
'set con=nothing
%>
}


</script>




<form name="formulario" method="post" action="">

<table width="50%" border="0" align="center" >
<tr>
<td>
Sedes:
</td>
<td>
<%
'Creo y habro el recorset de carreras
set rsSedes = server.CreateObject ("adodb.recordset")
rsSedes.Source = "SELECT * FROM Sedes"
rsSedes.ActiveConnection = Con
rsSedes.CursorType = 3
rsSedes.LockType = 3
rsSedes.Open
%>
<SELECT id=select1 size=1 name="lstSede" onchange="CargarLista2(lstSede.value, 'car')" >
<option value=0 selected>
Todas
</option>
<%
do while not rsSedes.EOF
Sede_Id= rsSedes.Fields ("Sed_Id")
Sede_Des= rsSedes.Fields ("Sed_Descripcion")
%>
<option value=<%=Sede_Id%>>
<%=Sede_Des%>
</option>
<%
rsSedes.MoveNext
loop
rsSedes.close
con.close
set rssedes=nothing
set con=nothing
%>
</SELECT>
</td>
</tr>

<tr>
<td>
Carreras:
</td>
<td>
<SELECT id=select2 size=1 name="lstcarrera4" onchange="CargarLista2(lstcarrera4.value, 'alu')">
</SELECT>
</td>
</tr>

<tr>
<td>
Alumnos:
</td>
<td>
<SELECT id=select3 size=1 name="lstalumno">
</SELECT>
</td>
</tr>
</table>

</form>


</BODY>

</HTML>
---------------------------------------------


gustavo
03 de Mayo del 2002
esta es la version con 1 funcion, pero con el mismo problema, si pongo otro select * from alumnos ..., no me aparese nada

ademas, para pasar el parametro, (yo puse un 11 fijo, tengo que usar un text oculto ?)

<%@ Language=VBScript %>
<%option explicit %>

<HTML>

<HEAD>

<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">

</HEAD>



<BODY>

<%
dim Con
dim Cone
dim rsSedes
dim rs
dim rsCarreras
dim rsAlumnos
dim Sede_Id
dim Sede_Des
dim nada
%>


<script language="javaScript">
<%
'Creo y habro la tabla
set Con = server.CreateObject ("adodb.connection")
con.ConnectionString ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & Server.MapPath("universidad.mdb")
con.Open
%>

function CargarLista2(myitem,combo)
{
<%dim ssql%>
alert("ahora voy por el: " + combo);
if (combo=='car')
{
<% ssql="SELECT * FROM carreras, sedes WHERE carreras.sed_id=sedes.sed_id and carreras.sed_id=11" %>
}
if (combo=='alu')
{
<% ssql="SELECT * FROM carreras, sedes WHERE carreras.sed_id=sedes.sed_id and carreras.sed_id=11" %>
}

<%
'Creo y habro el recorset de carreras
set rsSedes = server.CreateObject ("adodb.recordset")
rsSedes.Source = ssql
rsSedes.ActiveConnection = Con
rsSedes.CursorType = 3
rsSedes.LockType = 3
rsSedes.Open

if not rsSedes.eof then

%>
alert("combo vale: " + combo)
if (combo=='car')
{
document.forms.formulario.lstcarrera4.length=0;
count=0;
opcion0=new Option("todas","0");
document.forms.formulario.lstcarrera4.options[0]=opcion0;
alert("carrerasssssssss");
}
if (combo=='alu')
{
document.forms.formulario.lstalumno.length=0;
count=0;
opcion0=new Option("todos","0");
document.forms.formulario.lstalumno.options[0]=opcion0;
alert("alumnosssssssssss");
}
<%
do while not rsSedes.eof
%>
if (combo=='car')
{
des="<%=rsSedes.fields("Car_Descripcion")%>";
id="<%=rsSedes.fields("Car_Id")%>";
count=count+1;
newopcion=new Option(des,id);
document.forms.formulario.lstcarrera4.options[count]=newopcion;
}
if (combo=='alu')
{
des="<%=rsSedes.fields("Car_Descripcion")%>";
id="<%=rsSedes.fields("Car_Id")%>";
count=count+1;
newopcion=new Option(des,id);
document.forms.formulario.lstalumno.options[count]=newopcion;
}

<%
rsSedes.movenext
loop
%>

<%
else
%>

alert ("si eof");
if (combo=='car') document.forms.formulario.lstcarrera4.length=0
if (combo=='alu') document.forms.formulario.lstalumno.length=0

<%
end if
rsSedes.close
'con.close
set rsSedes=nothing
'set con=nothing
%>
}

</script>


<form name="formulario" method="post" action="">
<table width="50%" border="0" align="center" >
<tr>
<td>
Sedes:
</td>
<td>
<%
'Creo y habro el recorset de carreras
set rsSedes = server.CreateObject ("adodb.recordset")
rsSedes.Source = "SELECT * FROM Sedes"
rsSedes.ActiveConnection = Con
rsSedes.CursorType = 3
rsSedes.LockType = 3
rsSedes.Open
%>
<SELECT id=select1 size=1 name="lstSede" onchange="CargarLista2(lstSede.value, 'car')" >
<option value=0 selected>
Todas
</option>
<%
do while not rsSedes.EOF
Sede_Id= rsSedes.Fields ("Sed_Id")
Sede_Des= rsSedes.Fields ("Sed_Descripcion")
%>
<option value=<%=Sede_Id%>>
<%=Sede_Des%>
</option>
<%rsSedes.MoveNext
loop
rssedes.close
con.close
set rssedes=nothing
set con=nothing
%>
</SELECT>
</td>
</tr>

<tr>
<td>
Carreras:
</td>
<td>
<SELECT id=select2 size=1 name="lstcarrera4" onchange="CargarLista2(lstcarrera4.value, 'alu')" >
</SELECT>
</td>
</tr>

<tr>
<td>
Alumnos:
</td>
<td>
<SELECT id=select3 size=1 name="lstalumno">
</SELECT>
</td>
</tr>
</table>
</form>

</BODY>

</HTML>