Foros del Web » Programando para Internet » PHP »

3 Selects dependientes

Estas en el tema de 3 Selects dependientes en el foro de PHP en Foros del Web. 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, ...
  #1 (permalink)  
Antiguo 14/03/2008, 05:44
 
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>
  #2 (permalink)  
Antiguo 14/03/2008, 08:43
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Re: 3 Selects dependientes

Tendras necesariamente que utilizar AJAX para lo que deseas hacer, mira este link
Selects Dependientes

Saludos.
  #3 (permalink)  
Antiguo 14/03/2008, 08:56
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: 3 Selects dependientes

También te recomiendo te des una vuelta por el foro de AJAX encontraras muchos tutoriales en las FAQs de ese foro.

Saludos.
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 22:14.