Foros del Web » Programando para Internet » PHP »

Combos Anidados PHP + Javascript algo raro pasa

Estas en el tema de Combos Anidados PHP + Javascript algo raro pasa en el foro de PHP en Foros del Web. Hola, fijense que debo hacer en una pagina que se elija el pais y estado en que se encuentra la persona que se esta inscribiendo. ...
  #1 (permalink)  
Antiguo 01/06/2005, 14:27
Avatar de xcars  
Fecha de Ingreso: mayo-2005
Ubicación: El Salvador
Mensajes: 753
Antigüedad: 18 años, 11 meses
Puntos: 4
Combos Anidados PHP + Javascript algo raro pasa

Hola, fijense que debo hacer en una pagina que se elija el pais y estado en que se encuentra la persona que se esta inscribiendo.
Asi que primero creo una conexion a mi BD y meto todos los paises a la lista 1 llamada PAISES el cual tiene la opcion onChange que llama un javascript el cual llena la siguiente lista, Lista 2 llamada estados.
esta lista 2 deberia de llenarse con los estados que corresponden al pais elegido, pero si pongo que agregue el campo del nombre pareciera que tuviera error la pagina pk no hace nada (he puesto un alert) y si pongo cualquier otro campo de la tabla me funciona, que es lo que pasa?


Estructura de las tablas
Código:
TABLA PAIS
Codigo_pais 
Nombre_pais

TABLA ESTADOS
codigo_estado
codigo_pais
nombre_estado
Codigo PHP
Código PHP:
<?
$resultado
=mssql_query("select * from pais order by nombre_pais",$enlace);
echo 
"<td>&nbsp;<select name='paises' onChange='componer_estados(this.value)'>";
printf("<option>--seleccione--</option>");
while(
$row mssql_fetch_array($resultado))
{
    
printf("<option value='%s'>&nbsp;%s&nbsp;</option>",$row["codigo_pais"],$row["nombre_pais"]);
}

?>
Funcion de JavaScript
Código PHP:
function componer_estados(cod_pais)
{
alert(cod_pais);
document.miformulario.estados.length=0;
document.miformulario.estados.options[0] = new Option("-- Seleccione --","","defaultSelected","");
var indice=1;
<?
$sql_estado 
"SELECT * from estado";
$rs_estado mssql_query($sql_estado,$enlace);
if(
mssql_num_rows($rs_estado)>0)
{
while(
$row_estado mssql_fetch_assoc($rs_estado))
{

?>
if(cod_pais=='<?=$row_estado["codigo_pais"]?>')
{

document.miformulario.estados.options[indice] = new Option("<?=$row_estado["nombre_estado"]?>","<?=$row_estado["codigo_estado"]?>");
indice++;
}
<?
}
}
?>
}

</script>
Ojo en la parte donde adiciono los estados en el javascript si yo cambio el campo nombre_estado por cualquier otro campod e la tabla me funciona bien, pero cuando pongo el campo que corresponde, osea nombre_Estado no funciona, que sucede?
  #2 (permalink)  
Antiguo 01/06/2005, 15:29
Avatar de xcars  
Fecha de Ingreso: mayo-2005
Ubicación: El Salvador
Mensajes: 753
Antigüedad: 18 años, 11 meses
Puntos: 4
nadie
  #3 (permalink)  
Antiguo 01/06/2005, 22:26
Avatar de CORE
Usuario no validado
 
Fecha de Ingreso: abril-2002
Ubicación: Merida
Mensajes: 2.165
Antigüedad: 22 años
Puntos: 3
Hola

yo estoy haciendo algo igual y la forma mas facil que encontre fue comprarndo la extension Dynamic Dependat Dropdown para dreamweaver mx 2004

saludos
  #4 (permalink)  
Antiguo 01/06/2005, 23:02
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
... probé tu código y me funcionó... ... reviza bien que estés dirigiendo correctamente (el name del formulario, el name del select, los nombres de tus tablas y campos.. etc).

Ahora bien... sirve pero te sugiero chekes y corrijas el cómo imprimes este bucle:
Código PHP:
while($row_estado = mssql_fetch_assoc($rs_estado))
{

?>
if(cod_pais=='<?=$row_estado["codigo_pais"]?>')
{

document.miformulario.estados.options[indice] = new Option("<?=$row_estado["nombre_estado"]?>","<?=$row_estado["codigo_estado"]?>");
indice++;
}
<?
}
Estás mandando a imprimir N if() de JavaScript según N estados tengas... no está del todo mal pero mejor sería mandar a imprimir un solo if y dentro de el los options que han de generarse... reviza la FAQ #1 del foro de JavaScript.

Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #5 (permalink)  
Antiguo 01/06/2005, 23:05
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Solo como información, podría interezarte aunque creo estás "por buen camino": http://www.forosdelweb.com/f18/trabajar-con-dos-listas-desplegables-que-guardan-relacion-211046/

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
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:08.