Ver Mensaje Individual
  #16 (permalink)  
Antiguo 14/02/2007, 23:57
Avatar de cyrux_cob
cyrux_cob
 
Fecha de Ingreso: febrero-2007
Mensajes: 28
Antigüedad: 17 años, 2 meses
Puntos: 1
Re: Necesito cargar dos combobox uno depende del otro

Aquí te pongo unos códigos que implementé para mi aplicación, no sé como tú tienes conformada tu base de datos pero, este ejemplo parte de como tengo echa la mía.

Partiendo de 2 tablas:

primera tabla:
id_marca
name_marca

segunda tabla:
id_modelo
id_marca
name_modelo

el script se llama juegos.php

<?

$cons_marca = mysql_query("select * from marca");
if (!$cons_marca)
echo "no se pudo";

$row_marca=mysql_fetch_assoc($cons_marca);
if (!$id_marca)
{
$id_marca=$row_marca["id_marca"]; //aseguro que id_marca tenga siempre un valor
@mysql_data_seek($cons_marca,0);
}


$cons_modelo = mysql_query("select * from modelo
where id_marca=$id_marca");

$row_modelo=mysql_fetch_assoc($cons_modelo);
if (!$cons_modelo)
echo "no se pudo";

if (!$id_modelo)
{
$id_modelo=$row_modelo["id_modelo"]; //aseguro que id_modelo tenga siempre un valor
@mysql_data_seek($cons_modelo,0);
}

?>
<form method=post id=entrada_form action="juego.php">
<select name="id_marca" onchange="entrada_form.submit()">
<? do
{
?>
<option <?
if ($row_marca["id_marca"]==$id_marca)
echo "selected"; ?> value=<? echo $row_marca["id_marca"] ?> > <? echo $row_marca["name_marca"] ?>
</option>
<?
} while ($row_marca=mysql_fetch_assoc($cons_marca))

?>
</select>
<select name="id_modelo" onchange="entrada_form.submit()">
<? do
{
?>
<option <?
if ($row_modelo["id_modelo"]==$id_modelo)
echo "selected"; ?> value=<? echo $row_modelo["id_modelo"] ?> > <? echo $row_modelo["name_modelo"] ?>
</option>
<?
} while ($row_modelo=mysql_fetch_assoc($cons_modelo))

?>
</select>
</form>



Nota que cada vez que escojas una opcion la pagina se llama a ella misma.

Tuve que modificar mucho mi script para poderte simplificar, por si ves algún error. . Luego lo revizo con más calma y te digo si vi algún error.

Última edición por cyrux_cob; 15/02/2007 a las 00:07 Razón: Encontre un errorsito, ya está