Foros del Web » Programando para Internet » PHP »

3 listas dependientes con mysql

Estas en el tema de 3 listas dependientes con mysql en el foro de PHP en Foros del Web. He seguido el ejemplo q maneja este foro, solo q ahora quiero implementarlo para 3 listas, q la 3° lista dependa de la 2°; obviamente ...
  #1 (permalink)  
Antiguo 02/11/2004, 19:53
 
Fecha de Ingreso: octubre-2004
Mensajes: 82
Antigüedad: 13 años, 2 meses
Puntos: 1
3 listas dependientes con mysql

He seguido el ejemplo q maneja este foro, solo q ahora quiero implementarlo para 3 listas, q la 3° lista dependa de la 2°; obviamente la tabla esta relacionada por una FK = q se maneja aqui.
el codigo q implemento es:

echo "<select name=\"id_nieta\">\n";
/// AQUI LE TENGO Q PONER ASI POR Q SI NO, NO ME MUESTRA LA 3° LISTA
echo "<select name=\"id_nieta\" onChange=\"this.form.submit()\">\n";
echo "<option value=\"\"> Seleccione OPCION </option>\n";
if (!empty($id_nieta)){
$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 )) {
echo "<option value=\"".$registro_nieta['id']."\">".$registro_nieta['item_texto']."</option>\n";}}
else {
echo "<option value=\"\"> No hay registros para este Item </option>";} }
mysql_free_result($consulta_nieta);

Solo q no me queda por q cuando le selecciono de la 2° lista en la 3° no me aparece ninguna opcion, tengo q volver a seleccionar la 1° lista y es asi como me aparece opciones de la 3° lista q devieron aparecer antes; osea me muestra opciones en la 3° lista un despues de ... y asi sucesivamente.
No como controlar esto; aver si alguien me puede axiliar.
  #2 (permalink)  
Antiguo 04/11/2004, 12:56
 
Fecha de Ingreso: octubre-2004
Mensajes: 82
Antigüedad: 13 años, 2 meses
Puntos: 1
Ya me quedo !!!


Solo es para decirles q ya le he dado solucion a este problema; manejo tres tablas reacionales en mysql y obtego los datos de ellas de manera independiente en donde la 3ª depende de la 2ª y la 2ª de la 1ª.
Si ha alguien le interesa hagamelo saber, yo les proporciono el codigo php y el script en mysql.

Mi cuerpo esta en Windows, pero mi mente pensando en Linux
  #3 (permalink)  
Antiguo 05/11/2004, 05:41
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Comparte el código simplemente .. no hace falta que te lo tengan que pedir .. de hecho igual que hay una FAQ para dos listas .. podrías añadir tu código también o mejor todavía explicar la técnica para N listas dependientes (con ejemplo completo + estructura de las tablas que usas y relación de estas para que quede claro todo si es posible).

Un saludo,
  #4 (permalink)  
Antiguo 05/11/2004, 19:13
 
Fecha de Ingreso: octubre-2004
Mensajes: 82
Antigüedad: 13 años, 2 meses
Puntos: 1
Tienen razon Cluster, hay va el codigo

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>"
    } 

Última edición por Cluster; 06/11/2004 a las 14:48
  #5 (permalink)  
Antiguo 06/11/2004, 14:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Gracias en nombre de todos por el ejemplo ..

Un saludo,

PD: Editè tu código para poner el código "coloreado"
  #6 (permalink)  
Antiguo 06/09/2005, 11:21
 
Fecha de Ingreso: agosto-2005
Mensajes: 159
Antigüedad: 12 años, 4 meses
Puntos: 0
Puedes Colocar el código completo ??? Parece no funcionar...Gracias
  #7 (permalink)  
Antiguo 01/03/2006, 17:29
 
Fecha de Ingreso: agosto-2004
Ubicación: Stgo de Chile
Mensajes: 64
Antigüedad: 13 años, 4 meses
Puntos: 0
Algo ocurre, a mi tampoco me funcionó.
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 17:52.