Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/03/2008, 05:44
senit
 
Fecha de Ingreso: marzo-2008
Mensajes: 28
Antigüedad: 16 años, 1 mes
Puntos: 0
3 Selects dependientes

Espero alguien me pueda ayudar.

Yo quiero poner un primer select que se carge con una consulta a una tabla de una base de datos, hasta aquí todo bien.

Despues quiero poner un segundo select que se carga con otra consulta a la misma tabla de la base de datos que el primer select pero en función de la elección del primer select, os pongo un ejemplo para que lo entendais.

Mi primer select carga las marcas de los coches de una base de datos, esto lo hago con distinct en la query. El segundo select debería cargar los modelos de la marca elegida en el primer select, y aquí es donde me da error, y el tercer select debería cargar los años de ese modelo, pero hasta aquí no he llegado.

Os pongo la parte de codigo que tengo para que me echeis una mano.

Gracias anticipadas.

<?php
//conexión a mysql
@ $db=mysql_connect ("localhost", "root", "");
mysql_select_db("basedatos");
//seleccionamos las opciones del select principal
$sql = "SELECT DISTINCT MARCA FROM piezas";
$result = mysql_query($sql);
$num_results = mysql_num_rows ($result);
$lineas = $num_results;
$firmas = $lineas;
$Fin = $lineas;
$Inic = 1;
?>

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

<!--Combo principal-->
<select name="marca" onChange="redirect(this.options.selectedIndex)" style='width:160'>
<option selected value=0>MARCA</option>
<?php
//mostramos todos nuestros artículos, viendo si han sido agregados o no a nuestro carro de compra
for ($i=$Inic;$i<=$Fin;$i++) {
$row=mysql_fetch_array($result);
?>

<option value="<?php echo $row ['MARCA']; ?>"><?php echo $row ['MARCA']; ?></option>

<?php
}
?>
</select>

<!--Combo dinámico-->
<select name="modelo" style='width:160'>
<option selected value=0>MODELO</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=new Array()";

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

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

$sql = "SELECT DISTINCT MODELO FROM piezas WHERE MARCA =".$_POST['marca'];
$res = mysql_query($sql);
//Obtenemos el número de modelos para esa marca
$num2 = mysql_num_rows($res);

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

$id_modelo = mysql_result($res,$j,0);
$modelo = mysql_result($res,$j,1);

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

}
}

?>

var temp=document.form1.modelo

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=new Option(group[x].text,group[x].value)
}
temp.options[0].selected=true
}
//-->
</script>