Foros del Web » Programando para Internet » PHP »

combos anidados...pero dinamicamente

Estas en el tema de combos anidados...pero dinamicamente en el foro de PHP en Foros del Web. Hola gente...tengo el siguiente código en js que me vincula el combo países con el de sus ciudades respectivas. Funciona bien si se agregan los ...
  #1 (permalink)  
Antiguo 05/08/2005, 08:56
 
Fecha de Ingreso: septiembre-2004
Ubicación: Argentina
Mensajes: 49
Antigüedad: 19 años, 7 meses
Puntos: 0
Exclamación combos anidados...pero dinamicamente

Hola gente...tengo el siguiente código en js que me vincula el combo países con el de sus ciudades respectivas. Funciona bien si se agregan los datos manualmente. Mi problema es que necesito adaptarlo para que funcione dinamicamente, es decir que tome los datos de los países y ciudades de una base de datos. Intenté hacerlo con php pero se complicaba para relacionarlo con js...bueno, espero que alguno me de alguna idea...

gracias de antemano!

el código es:

<html>
<head>
<script language="JavaScript">

/* Trae desde la base de datos los nombres de los paises */
/* y colóos en este arreglo. */
var aPaises = new Array(" ","Mexico","Espana","Venezuela"
);

var aEstados0 = new Array(
" "
);

/* Trae desde la base de datos los nombres de las ciudades */
/* de cada uno de los paises de la lista anterior y ponlos */
/* en arreglos individuales. */
var aEstados1 = new Array(" ","Ciudad de Mexico","Monterrey","Guadalara"
);

var aEstados2 = new Array(" ","Madrid","Barcelona","San Sebastian"
);

var aEstados3 = new Array(" ","Caracas","Coro","Maracay","Valencia"
);

/* Arma un arreglo general de estados a partir de los arreglos */
/* anteriores. Es importante que cada arreglo comience por un */
/* valor en blanco y que el primer arreglo de ciudades, llamado */
/* aqui aEstados0, no contenga ningúemento. */
var aEstados = new Array( aEstados0, aEstados1, Estados2, aEstados3
);

function opcion(oCntrl, iPos, sTxt, sVal){
var selOpcion=new Option(sTxt, sVal);
eval(oCntrl.options[iPos]=selOpcion);
}

function cambia(oMster, oCntrl){
var nSelected = oMster.selectedIndex;
while (oCntrl.length) oCntrl.remove(0);
for(var i = 0; i < aEstados[nSelected].length; i++)
opcion(oCntrl, i, aEstados[nSelected][i], String(i));
}

function llena(oCntrl){
while (oCntrl.length) oCntrl.remove(0);
for(var i = 0; i < aPaises.length; i++)
opcion(oCntrl, i, aPaises[i], String(i));
}

</script>
</head>
<body>
<form name="frm">
Pais
<select name="pais" onchange="cambia(this, document.frm.ciudad)">
<option value=" ">&nbsp;</option>
</select>
&nbsp;&nbsp;&nbsp;
Ciudad
<select name="ciudad">
<option value=" ">&nbsp;</option>
</select>
</form>
<script language="JavaScript">
llena(document.frm.pais);
</script>
</body>
</html>
  #2 (permalink)  
Antiguo 05/08/2005, 09:58
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 4 meses
Puntos: 34
Haces un query a la db, y en el while que estara en el medio del js ese, dibujaras dinamicamente el vector js....sería algo para que te des una idea como:


Código PHP:
<script>
...
<?php
...
//While de paises
while($rsPais mysql_fecth_array$punteroMYSQL_ASSOC ) {
    
$str =  'var aEstados'$rsPais["codigoPais"] .' = new Array(" " 
        #While de Prov
        while($rsProv = mysql_fecth_array( $puntero, MYSQL_ASSOC ) {
                $str .= '
,"'. $rsProv["nombreProvincia"] .'"';
        }
    $str .= '
);;
    echo 
$str;
...
}
...

?>
...
<script>

Esto de oido a modo de ejemplo, pero sería la idea...de ahi en mas, no se que extructura tenes y demas....
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #3 (permalink)  
Antiguo 05/08/2005, 11:21
 
Fecha de Ingreso: septiembre-2004
Ubicación: Argentina
Mensajes: 49
Antigüedad: 19 años, 7 meses
Puntos: 0
una consulta, el MYSQL_ASSOC es para sacar el índice de la fila??
__________________
"Sólo sé que no sé nada..." - Sócrates - (un adelantado...!)
  #4 (permalink)  
Antiguo 05/08/2005, 11:44
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 4 meses
Puntos: 34
Es para especificar el tipo de vector. Es un parametro opcional de mysql_fecth_array.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
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 17:31.