Foros del Web » Programando para Internet » ASP Clásico »

Combos dependientes NO ME VA :(

Estas en el tema de Combos dependientes NO ME VA :( en el foro de ASP Clásico en Foros del Web. Wenas wenas, quiero hacer lo típico, dos combos dependientes que toman sus valores de una base de datos. En este caso la estructura es la ...
  #1 (permalink)  
Antiguo 15/07/2003, 06:31
Avatar de angel_dope  
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 737
Antigüedad: 21 años, 6 meses
Puntos: 8
Combos dependientes NO ME VA :(

Wenas wenas, quiero hacer lo típico, dos combos dependientes que toman sus valores de una base de datos. En este caso la estructura es la siguiente, tengo una tabla con actividades y subactividades. Las actividades tienen un código del 1 al 9 y despues las subactividades de cada actividad tienen el código de forma que empieza por el codigo de la principal, es decir, si tengo una actividad con codigo 1, todas subactividades tendran el código 1XXX, se entiende??? He tomado un ejemplo que habia aqui puesto en los foros y he intentado adaptarlo para lo que yo quiero, pero como que no me funciona Alguien sabe donde esta el error?? Tal y como está ahora, la lista dependiente siempre sale vacia. Os pongo los dos códigos.
Esté es el código original:

Código PHP:
<HTML>
<
HEAD>
    <
TITLE>ASP Fácil Código</TITLE>


<
H2><CENTER>Listas dinámicas dependientes</CENTER></H2>
<
P><B>Elige una categoría para ver los productos pertenecientes a ella:</B>
<
P>
<
FORM NAME="Listas" METHOD="POST" ACTION="receive.asp">
<
B>Categorías</B>
<
SELECT NAME="Categorias" SIZE="1" 
  
OnChange="ComponerLista (document.forms.Listas.Categorias[selectedIndex].value);">
<%
Dim oConnrsSQLcuentacategoria

set oConn
=Server.CreateObject("ADODB.Connection")
set rs=Server.CreateObject("ADODB.Recordset")
oConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" Server.MapPath("ejemplo.mdb")

SQL="SELECT * FROM Categorias"
rs.Open SQLoConn
cuenta
=1
while not rs.EOF 
%>
    <
OPTION VALUE="<%=rs.Fields("IdCategoria")%>" 
    
<% if cuenta=1 then%>
        
SELECTED
    
<%end if%>>
    <%=
rs.Fields("NomCategoria")%></OPTION>
<%
rs.MoveNext
cuenta
=cuenta+1
wend
rs
.Close
%>
</
SELECT>
<
P><B>Productos</B>
<
SELECT NAME="Productos" SIZE="1">
</
SELECT>
<
P><INPUT TYPE="submit"></FORM>

<
SCRIPT LANGUAGE="Javascript">
<!--
function 
Tupla campo1campo2 )
{
    
this.campo1 campo1;
    
this.campo2 campo2;
}

<%
'Vamos a crear nuestros arrays de productos desde ASP
'
El primer if detecta un cambio en la categoría para
'crear un nuevo array en Javascript

SQL="SELECT * FROM Productos ORDER BY Categoria, IdProducto"
rs.Open SQL, oConn
cuenta=0
cat="basura"
while not rs.EOF 
    if cat<>rs.Fields("Categoria") then
    ' 
cambio de categoriaempiezo a contar en 0
        cuenta
=0
        cat
=rs.Fields("Categoria")
    
'además tengo que crear un nuevo array para la categoría
%>
var opciones<%=cat%> = new Array();
<%
    end if
%>
opciones<%=cat%>[<%=cuenta%>]=new Tupla("<%=rs.Fields("Nombre")%>","<%=rs.Fields("IdProducto")%>");

<%
cuenta=cuenta+1
rs.MoveNext
wend
%>


 <%
'
Limpiamos objetos
rs
.Close
set rs
=nothing
oConn
.Close
set oConn
=nothing
%>

var 
contador;

function 
ComponerLista ( array ) {
// Compone la lista dependiente a partir
// del valor de la opcion escogida en la lista "padre"
BorrarLista();
array = eval(
"opciones" + array);

for (
contador=0contador<array.lengthcontador++) 
{
// añade elementos nuestro combobox
var optionObj = new Option( array[contador].campo1, array[contador].campo2 );

Listas.Productos.options[contador] = optionObj;
// for
// ComponerLista


function BorrarLista() {

    
Listas.Productos.length=0;
}

//Inicializamos
ComponerLista (1);

-->
</SCRIPT>
<br>
</FORM> 
Y este de aqui es el código que yo he intentado adaptar
Código PHP:
<HTML>
<
HEAD>
    <
TITLE>Listas dependientes</TITLE>
</
HEAD>
<
BODY>
<!--
Listas dependientes por Carlos de la Orden Dijs
17 de Diciembre de 2000
--->

<
H2><CENTER>Listas dinámicas dependientes</CENTER></H2>
<
P><B>Elige una categoría para ver los productos pertenecientes a ella:</B>
<
P>
<
FORM NAME="Listas" METHOD="POST" ACTION="receive.asp">
<
B>Categorías</B>
<
SELECT NAME="Categorias" SIZE="1" 
  
OnChange="ComponerLista (document.forms.Listas.Categorias[selectedIndex].value);">
<%
Dim oConnrsSQLcuentacategoria

set oConn
=Server.CreateObject("ADODB.Connection")
set rs=Server.CreateObject("ADODB.Recordset")
oConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" Server.MapPath("../../basesdatos/publicom.mdb")

SQL="SELECT * FROM actividadgeneral where codigo < 10 order by codigo asc"
rs.Open SQLoConn
cuenta
=1
while not rs.EOF 
%>
    <
OPTION VALUE="<%=rs.Fields("codigo")%>" 
    
<% if cuenta=1 then%>
        
SELECTED
    
<%end if%>>
    <%=
rs.Fields("observaciones")%></OPTION>
<%
rs.MoveNext
cuenta
=cuenta+1
wend
rs
.Close
%>
</
SELECT>
<
P><B>Productos</B>
<
SELECT NAME="Productos" SIZE="1">
</
SELECT>
<
P><INPUT TYPE="submit"></FORM>

<
SCRIPT LANGUAGE="Javascript">
<!--
function 
Tupla campo1campo2 )
{
    
this.campo1 campo1;
    
this.campo2 campo2;
}

<%
'Vamos a crear nuestros arrays de productos desde ASP
'
El primer if detecta un cambio en la categoría para
'crear un nuevo array en Javascript

SQL="SELECT * FROM actividadgeneral ORDER BY codigo,observaciones"
rs.Open SQL, oConn
cuenta=0
cat="basura"
while not rs.EOF 
    if cat<>rs.Fields("observaciones") then
    ' 
cambio de categoriaempiezo a contar en 0
        cuenta
=0
        cat
=rs.Fields("observaciones")
    
'además tengo que crear un nuevo array para la categoría
%>
var opciones<%=cat%> = new Array();
<%
    end if
%>
opciones<%=cat%>[<%=cuenta%>]=new Tupla("<%=rs.Fields("observaciones")%>","<%=rs.Fields("codigo")%>");

<%
cuenta=cuenta+1
rs.MoveNext
wend
%>


 <%
'
Limpiamos objetos
rs
.Close
set rs
=nothing
oConn
.Close
set oConn
=nothing
%>

var 
contador;

function 
ComponerLista ( array ) {
// Compone la lista dependiente a partir
// del valor de la opcion escogida en la lista "padre"
BorrarLista();
array = eval(
"opciones" + array);

for (
contador=0contador<array.lengthcontador++) 
{
// añade elementos nuestro combobox
var optionObj = new Option( array[contador].campo1, array[contador].campo2 );

Listas.Productos.options[contador] = optionObj;
// for
// ComponerLista


function BorrarLista() {

    
Listas.Productos.length=0;
}

//Inicializamos
ComponerLista (1);

-->
</SCRIPT>
<br>
</FORM>

</BODY>
</HTML> 
Espero que alguien sepa donde está el error, xq me hace mucha falta, gracias por adelantado, salu2,
__________________
Vayamos por Partes :: Jack el Destripador
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:24.