Foros del Web » Programando para Internet » PHP »

Ayuda Para Cargar Datos En Select Anidados Desde La Db

Estas en el tema de Ayuda Para Cargar Datos En Select Anidados Desde La Db en el foro de PHP en Foros del Web. Hola a todos resulta que tengo un pequeño problema con mi pagina .... pues tengo tres select anidados es decir tengo las siguientes tablas PAIS ...
  #1 (permalink)  
Antiguo 12/10/2005, 22:14
Avatar de ing_aprendiz  
Fecha de Ingreso: septiembre-2005
Mensajes: 136
Antigüedad: 12 años, 3 meses
Puntos: 0
Ayuda Para Cargar Datos En Select Anidados Desde La Db

Hola a todos resulta que tengo un pequeño problema con mi pagina .... pues tengo tres select anidados es decir tengo las siguientes tablas

PAIS

ID_PAIS
NOM_PAIS

DEPARTAMENTO

ID_DEPARTAMENTO
NOM_DEPARTAMENTO
ID_PAIS

CIUDAD

ID_CIUDAD
NOM_CIUDAD
ID_DEPARTAMENTO
ID_PAIS

entonces tengo tres listbox anidados es decir cuando elijo en el listbox el pais, en el segundo listbox se cargan los departamentos o estados que pertenecen al país elegido, y cuando elijo un departamento o estado en el tercer listbox se cargan las ciudades que pertenecen a el depto o estado que seleccione.... en la insercion funciona perfecto pero cuando por ejemplo voy a actualizar una tabla como estas:

INSTITUCION
ID_INSTITUCION
NOM_INSTITUCION
ID_PAIS
ID_DEPARTAMENTO
ID_CIUDAD

Tengo un lio al tratar de cargar los datos que hay en ID_PAIS, ID_DEPARTAMENTO,ID_CIUDAD en la tabla institucion pues como estan anidados no puedo cargarlos en los listbox correspondientes para actualizarlos-.... el codigo que tengo es el siguiente:

en este cargo el pais seleccionado en la tabla institucion y los demas paises que estan en la tabla paises...

echo"<tr>";
echo"<td align='left' class='Estilo2'>País:</td>";
echo"<td align='left' class='Estilo2'>";
$link=conectarse();
$resultado=mysql_query("select * from pais order by NOM_PAIS",$link);
echo "<select name=\"paises\" onChange=\"componer_estados(this.value);\">";
printf("<option>--seleccione--</option>");
while($file= mysql_fetch_array($resultado))
{
if($file[0]==$row[9])
{
$sel1 = 'selected';
}
else
{
$sel1 = '';
}
echo '<option value="'.$file[0].'" '.$sel1.'>'.$file[1].'</option>';
}
echo"</select></td>";
echo"</tr>";

pero como ven para cargar los departamentos llamo una funcion el el Onchange de select de pais.... esta funcion es:

<script>
function componer_estados(cod_pais)
{
//alert(ID_PAIS);

form.depto.length=0;

form.depto.options[0] = new Option("-- Seleccione --","","defaultSelected","");
var indice=1;
<?
$link=conectarse();
$sql_estado = "SELECT * from departamento";
$rs_estado = mysql_query($sql_estado,$link);
if(mysql_num_rows($rs_estado)>0)
{
while($row_estado = mysql_fetch_assoc($rs_estado))
{

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


form.depto.options[indice] = new Option("<?=$row_estado["NOM_DEPTO"]?>","<?=$row_estado["ID_DEPARTAMENTO"]?>");
indice++;
}
<?
}
}
?>
}

</script>

pero mi problema radica que cuando por ejemplo tengo en la tabla institucion tengo los datos

INSTITUCION


INSTITUCION
ID_INSTITUCION =1
NOM_INSTITUCION =UNIVERSIDAD DE COLOMBIA
ID_PAIS =3 // QUE CORRESPONDE A COLOMBIA
ID_DEPARTAMENTO =6 // QUE CORRESPONDE A CUNDINAMARCA
ID_CIUDAD =1 // QUE CORRESPONDE A BOGOTA

al cargar los distintos datos de los listbox correspondientes a paises, deptos y ciudades no se como implementar el mismo codigo que en el select de paises para que me muestre el pais correspondiente al que tengo en la tabla institucion... en la funcion que utilizo para cargar los departamentos pues en el list box debe aparecer el dato que corresponde al almacenado en el departamento de la tabla de institucion.... ademas de los depatos restantes que corresponden al pais que tambien esta elegido en la db....

espero me hayan entendido y agradezco infinitamente su colaboración...
  #2 (permalink)  
Antiguo 19/02/2006, 19:43
(Desactivado)
 
Fecha de Ingreso: septiembre-2005
Mensajes: 11
Antigüedad: 12 años, 3 meses
Puntos: 0
Tengo el mismo problema y creo que esta puede ser la solucion:
rinconastur.net en la seccion de php
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 08:57.