Enlaces
Esta en:

documentos
Arriba
Bind-9
Bind-8
Ad+bind
Dhcp
Kdephp
Shell
Trucos
Php
Documentos
Cuestiones php
Fedora
Legal
W2000 xp
COMOS
Errores dns

[PHP-ES] Combobox Anidados --- (php y javascript)... problemas =(

Write haof XML files: Diego <diego_at_insua.com.ar>
Fecha: Wed, 27 Apr 2005 03:54:20 -0300

Hola gente...

Resulta que necesito colocar 2 combobox (o selects) anidados en relacion uno
a muchos que se llenen cargando los datos desde una BD. El primero se debe
llenar al cargar la página, y el segundo se debe cargar al seleccionar una
opcion del primero, con los datos relativos a esa opcion.

Encontre un script del tipico ejemplo Paises y Provincias escrito en php y
javascript, el cual pongo mas abajo. El script llena bien el primer combo,
pero al elegir una de las opiciones no se llena el segundo combo. =(

Me interesa este script en particular ya que con el no se necesita recargar
la página para llenar el segundo combo.
Pero llevo bastante tiempo toqueteandole el código y no he conseguido
nada... así que si alguien le puede hechar el ojo y darme una mano se lo
agredeceria mucho =).

Saludos!!
Diego

<?php
//conexión a mysql
include ("conexion.php");

//seleccionamos las opciones del select principal
$sql = "SELECT id_pais,pais FROM paises ORDER BY pais";
$res = mysql_query($sql);

//obtenemos el número de registros
$num = mysql_num_rows($res);
?>

<FORM name="form1" method="POST">

<!--Combo principal-->
<select name="pais" onChange="redirect(this.options.selectedIndex)"
style='width:160'>
<option selected value=0>PAIS.</option>
<?
for($i=0;$i<$num;$i++) {
$id_club[$i] = mysql_result($res,$i,0);
$club[$i] = mysql_result($res,$i,1);
echo "<option value='$id_pais[$i]'>$pais[$i]</option>";
}
?>
</select>

<!--Combo dinámico-->
<select name="provincia" style='width:160'>
<option selected value=0>PROVINCIA</option>
</select>

</FORM>

<?

echo "<script><!--";
echo "var groups=".$num;
echo "var group=new Array(groups)";

//Crea tantos arrays como valores hay en el combo principal
echo "for (i=0; i<groups; i++) group[i]=new Array()";

//Opciones cuando no se ha hecho ninguna selección en el combo principal-->
echo "group[0][0]=new Option('PAIS','0');";

for($i=0;$i<$num;$i++) {

$sql = "SELECT id_provincia, provincia FROM provincias WHERE id_pais =
$id_pais[$i]";
$res = mysql_query($sql);
//Obtenemos el número de provincias para ese pais
$num2 = mysql_num_rows($res);

for($j=0;$j<$num2;$j++) {

$id_pais = mysql_result($res,$j,0);
$pais = mysql_result($res,$j,1);

//Opciones para la opción $i del combo principal
echo "group[$num][$j]=new Option('$provincia','$id_provincia')";

}
}
include ("cerrar_conexion.php");
?>

var temp=document.form1.provincia

function redirect(x){
for (m=temp.options.length-1;m>0;m--)
temp.options[m]=null
for (i=0;i<group[x].length;i++){
temp.options[i]=new Option(group[x][i].text,group[x][i].value)
}
temp.options[0].selected=true
}
//-->
</script>

<?php
//conexión a mysql
include ("conexion.php");

//seleccionamos las opciones del select principal
$sql = "SELECT id_pais,pais FROM paises ORDER BY pais";
$res = mysql_query($sql);

//obtenemos el número de registros
$num = mysql_num_rows($res);
?>

<FORM name="form1" method="POST">

<!--Combo principal-->
<select name="pais" onChange="redirect(this.options.selectedIndex)"
style='width:160'>
<option selected value=0>PAIS.</option>
<?
for($i=0;$i<$num;$i++) {
$id_pais[$i] = mysql_result($res,$i,0);
$pais[$i] = mysql_result($res,$i,1);
echo "<option value='$id_pais[$i]'>$pais[$i]</option>";
}
?>
</select>

<!--Combo dinámico-->
<select name="provincia" style='width:160'>
<option selected value=0>PROVINCIA</option>
</select>

</FORM>

<?

echo "<script><!--";
echo "var groups=".$num;
echo "var group=new Array(groups)";

//Crea tantos arrays como valores hay en el combo principal
echo "for (i=0; i<groups; i++) group[i]=new Array()";

//Opciones cuando no se ha hecho ninguna selección en el combo principal-->
echo "group[0][0]=new Option('PAIS','0');";

for($i=0;$i<$num;$i++) {

$sql = "SELECT id_provincia, provincia FROM provincias WHERE id_pais =
$id_pais[$i]";
$res = mysql_query($sql);
//Obtenemos el número de provincias para ese pais
$num2 = mysql_num_rows($res);

for($j=0;$j<$num2;$j++) {

$id_pais = mysql_result($res,$j,0);
$pais = mysql_result($res,$j,1);

//Opciones para la opción $i del combo principal
echo "group[$num][$j]=new Option('$provincia','$id_provincia')";

}
}
include ("cerrar_conexion.php");
?>

var temp=document.form1.provicia

function redirect(x){
for (m=temp.options.length-1;m>0;m--)
temp.options[m]=null
for (i=0;i<group[x].length;i++){
temp.options[i]=new Option(group[x][i].text,group[x][i].value)
}
temp.options[0].selected=true
}
//-->
</script>

-- 
PHP Spanish Localization Talk Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
Nearby mié abr 27 2005 - 12:24:28 CEST

Este archivo fue generado por hypermail 2.2.0 : mié nov 07 2007 - 20:55:33 CET


Página Principal
Google

Web
dns.bdat.net

Visita nuestro proveedor:
www.bdat.net

Publicidad:

Impresenteibols:Humor Jazz, música en vivo