La explicacion es la siguiente, tengo 3 tablas relacionales en donde la 1° es la principal, la 2° depende de la 1° y la 3° de la 2°, para ejemplificar tome los mismos campos, aunque aqui lo importante son las claves foraneas q conllevan a relacionar las tablas.
CREATE TABLE tabla_padre (
id tinyint(3) unsigned NOT NULL auto_increment,
item_texto varchar(255) NOT NULL default '',
PRIMARY KEY (id)
)type=innodb;
INSERT INTO tabla_padre VALUES('','MEXICO D.F.');
INSERT INTO tabla_padre VALUES('','EDO. MEXICO');
CREATE TABLE tabla_hija (
id tinyint(3) unsigned NOT NULL auto_increment,
id_padre tinyint(3) unsigned NOT NULL default '0',
item_texto varchar(255) NOT NULL default '',
PRIMARY KEY (id),
index(id_padre),
foreign key(id_padre) references tabla_padre(id)
on delete cascade on update cascade
)type=innodb;
INSERT INTO tabla_hija VALUES('','1','ALVARO OBREGON');
INSERT INTO tabla_hija VALUES('','1','AZCAPOTZALCO');
INSERT INTO tabla_hija VALUES('','1','BENITO JUAREZ');
INSERT INTO tabla_hija VALUES('','2','CHALCO');
INSERT INTO tabla_hija VALUES('','2','IXTAPALUCA');
INSERT INTO tabla_hija VALUES('','2','LOS REYES');
CREATE TABLE tabla_nieta (
id tinyint(3) unsigned NOT NULL auto_increment,
id_hija tinyint(3) unsigned NOT NULL default '0',
item_texto varchar(255) NOT NULL default '',
PRIMARY KEY (id),
index(id_hija),
foreign key(id_hija) references tabla_hija(id)
on delete cascade on update cascade
)type=innodb;
INSERT INTO tabla_nieta VALUES('','1','ALVARO 1');
INSERT INTO tabla_nieta VALUES('','1','ALVARO 2');
INSERT INTO tabla_nieta VALUES('','2','AZCAPOTZALCO 1');
INSERT INTO tabla_nieta VALUES('','2','AZCAPOTZALCO 2');
INSERT INTO tabla_nieta VALUES('','3','BENITO JUAREZ 1');
INSERT INTO tabla_nieta VALUES('','3','BENITO JUAREZ 2');
INSERT INTO tabla_nieta VALUES('','4','CHALCO 1');
INSERT INTO tabla_nieta VALUES('','4','CHALCO 2');
INSERT INTO tabla_nieta VALUES('','5','IXTAPALUCA 1');
INSERT INTO tabla_nieta VALUES('','5','IXTAPALUCA 2');
INSERT INTO tabla_nieta VALUES('','6','LOS REYES 1');
INSERT INTO tabla_nieta VALUES('','6','LOS REYES 2');
y el codigo php q implemente es este:
Código PHP:
echo "<select name=\"id_nieta\" onChange='this.form.submit()'>\n";
// Si $id_padre no tiene valor (caso de que no se ha seleccionado ningua opcion del select hijo
if (!empty($id_hija))
{
$SQLconsulta_nieta="SELECT * FROM tabla_nieta WHERE id_hija='$id_hija'";
$consulta_nieta = mysql_query($SQLconsulta_nieta,$conexion) or die(mysql_error());
if (mysql_num_rows($consulta_nieta) != 0)
{
While ($registro_nieta=mysql_fetch_assoc($consulta_nieta))
{
if ($id_nieta == $registro_nieta['id'])
{
echo "<option value=".$registro_nieta['id']." selected>".$registro_nieta['item_texto']."</option>\n";
}
else
{
echo "<option value=\"".$registro_nieta['id']."\">".$registro_nieta['item_texto']."</option>\n";
}
}
}
else
{
echo "<option value=\"\"> No hay registros para este Item </option>";
}
}
else
{
echo "<option value=\"\"> <-- Seleccione un Item </option>";
}