Ver Mensaje Individual
  #4 (permalink)  
Antiguo 14/06/2007, 13:09
The Neurochild
 
Fecha de Ingreso: marzo-2007
Mensajes: 53
Antigüedad: 17 años, 8 meses
Puntos: 0
Selects dependientes de 3 niveles PHP+MySQL+Javascript

He adoptado una solución muy interesante, combinando PHP, Javascript y base de datos MySQL. Pero el código tiene un problema.

A continuación se los muestro:
Código PHP:
<?
mysql_connect
("localhost","root","s0ld13r2"); 
mysql_select_db("dicosa_equiphone"); 
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Selects dependientes</title>
<script language="JavaScript">
<!--
function cambiar()
{
var index=document.forms.formulario.pais.selectedIndex;
formulario.region.length=0;
if(index==0){
vacio();
cambiar2();
}
<?
$result
=mysql_query("SELECT * FROM `planesdid` ORDER BY `pais` ASC");
$i 1;
while (
$row=mysql_fetch_array($result))
{
echo 
"if(index==".$i.") pais".$i."();\n";
$i++;
}
mysql_free_result($result);
?>
}
function vacio(){
opcion0=new Option('Seleccione región...','0','defauldSelected');
document.forms.formulario.region.options[0]=opcion0;
}
<?
$result
=mysql_query("SELECT * FROM `planesdid` ORDER BY `pais` ASC");
$i 1;
while (
$row=mysql_fetch_array($result))
{
echo 
"function pais".$i."(){\n";
echo 
"opcion0=new Option('Seleccione región...','0','defauldSelected');\n";
echo 
"document.forms.formulario.region.options[0]=opcion0;\n";
$result1=mysql_query("SELECT * FROM `didregion` WHERE `id_pais` = ".$row["id"]." ORDER BY `region` ASC");
$i1 1;
while (
$row1=mysql_fetch_array($result1))
{
echo 
"opcion".$i1."=new Option('".$row1["region"]."','".$row1["id"]."');\n";
echo 
"document.forms.formulario.region.options[".$i1."]=opcion".$i1.";\n";
$i1++;
}
mysql_free_result($result1);
$i1 0;
echo 
"}\n";
$i++;
}
mysql_free_result($result);
?>
function cambiar2()
{
var index=document.forms.formulario.region.selectedIndex;
formulario.ciudad.length=0;
if(index==0) vacio2();
<?
$result
=mysql_query("SELECT * FROM `didregion` ORDER BY `region` ASC");
$i 1;
while (
$row=mysql_fetch_array($result))
{
echo 
"if(index==".$i.") region".$i."();\n";
$i++;
}
mysql_free_result($result);
?>
}
function vacio2(){
opcion0=new Option('Seleccione ciudad...','0','defauldSelected');
document.forms.formulario.ciudad.options[0]=opcion0;
}
<?
$result
=mysql_query("SELECT * FROM `didregion` ORDER BY `region` ASC");
$i 1;
while (
$row=mysql_fetch_array($result))
{
echo 
"function region".$i."(){\n";
echo 
"opcion0=new Option('Seleccione ciudad...','0','defauldSelected');\n";
echo 
"document.forms.formulario.ciudad.options[0]=opcion0;\n";
$result1=mysql_query("SELECT * FROM `didciudades` WHERE `id_region` = ".$row["id"]." ORDER BY `pais_ciudad` ASC");
$i1 1;
while (
$row1=mysql_fetch_array($result1))
{
echo 
"opcion".$i1."=new Option('".$row1["pais_ciudad"]."','".$row1["id"]."');\n";
echo 
"document.forms.formulario.ciudad.options[".$i1."]=opcion".$i1.";\n";
$i1++;
}
mysql_free_result($result1);
$i1 0;
echo 
"}\n";
$i++;
}
mysql_free_result($result);
?>
//-->
</script>
</head>
<body>
<form name="formulario" method="post" action="">
<div align="center">País 
<select name="pais" OnChange="cambiar()">
<option value="0" selected>Seleccione país...</option>
<?
$result
=mysql_query("SELECT * FROM `planesdid` ORDER BY `pais` ASC");
while (
$row=mysql_fetch_array($result))
{
echo 
'<option value="'.$row["id"].'">'.$row["pais"].'</option>';
}
mysql_free_result($result);
?>
</select>
Región 
<select name="region" OnChange="cambiar2()">
<option value="0" selected>Seleccione región...</option>
</select>
Ciudad
<select name="ciudad">
<option value="0" selected>Seleccione ciudad...</option>
</select>
</div>
</form>
</body>
</html>
la situación es la siguiente: poner a funcionar de buena forma el 3er. select (ciudades).

Por cada país hay varias regiones. Por cada región hay varias ciudades. No se si el query para las regiones es el correcto. Necesito ayuda con esto, por favor

Saludos