El pera tiene razón... te voy a poner un script muy sencillo para hacer dos listas desplegables dependientes que puede ser que te sirvan... el problema es que si no los combinas con AJAX o te las ingenias de otra manera, si dichas listas dependientes están dentro de otro formulario al elegir la primera opción se produce un envío de formulario (del código hacia la DB para elegir la segunda lista en base a la primera) con la consecuente recarga de la página y por ende la pérdida de los datos hasta el momento ingresados por el usuario.
Primero prepara las tablas en la DB SQL que dependerán una de la otra:
Cita: 1.- En la base de datos se crean 2 tablas
2.- La primera tabla (table1) con 2 campos:
CAMPO 1: id tinyint (3) (que es el primario o la PRIMARY KEY)
CAMPO 2: color (varchar)... bla, bla bla...
id | color
1 | Escoge un color
2 | Primarios
3 | Secundarios
3.- La tabla 2 (table2, en el ejemplo) con dos campos también:
id_2 | subcolor
2 | Amarillo
2 | Rojo
3 | Verde
3 | Violeta
3 | Marrón
2 | Azul
3.- Al elegir un color en la primera lista se actualiza tomando en cuenta el id. el campo id_2 NO PUEDE SER PRIMARY KEY por tener numeros repetidos que hacen referencia al id de la table1.
Ahora el PHP:
Código PHP:
<?php
mysql_connect("myhost","myuser","mypass");
mysql_select_db("mydb");
$firstQry = mysql_query("select * from table1") or die(mysql_error()); // table 1
//La consulta obtiene el id de la tabla 1 que lo comparará con el de la 2//
$secondQry = mysql_query("select * from table2 where id_2 = '".$_POST["first"]."'") or die(mysql_error()); // table 2
?>
<form name="check" method="post">
<!-- A partir de aquí la primera lista desplegable -->
<select name="first" onchange="this.form.submit()">
<?php while($res = mysql_fetch_array($firstQry)){?>
<option value="<?php echo $res["id"]?>"><?php echo $res["color"]?></option>
<?php }unset($firstQry,$res);?>
</select>
<!-- Aquí termina la primera lista desplegable -->
<!-- A partir de aquí la segunda lista desplegable -->
<?php if(isset($_POST["first"])){?>
<select name="second">
<?php while($row = mysql_fetch_array($secondQry)){?>
<option value="<?php echo $row["subcolor"]?>"><?php echo $row["subcolor"]?></option>
<?php }
}unset($secondQry,$row);?>
</select>
<!-- Aquí termina la segunda lista desplegable -->
</form>
En teoría, al elegir en el primer combo el color primario, se hace un post para recargar la lista dos que tendrá amarillo, azul, rojo, etc...
Te repito que en este caso se recarga la página ya que si quieres hacer algo como el formulario siguente:
Nombre ________
Apellidos_________
Provincia__________
Localidad__________(campo dependiente de provincia)
si el cliente ha escrito ya su nombre y apellidos al elegir la provincia de la lista la pag se recarga y se cancela lo ya escrito, asi que o lo usas para solo las listas dependientes, o lo ones salomonicamente al principio o mas inteligentemente usas AJAX para que no se recarge la pag.
Espero que te sirva.
Saludos