Ver Mensaje Individual
  #32 (permalink)  
Antiguo 21/05/2008, 08:03
Avatar de Saruman
Saruman
 
Fecha de Ingreso: mayo-2003
Ubicación: Panama city, Panama, Panama
Mensajes: 1.154
Antigüedad: 21 años
Puntos: 5
Respuesta: APORTE: archivo SQL con todos los paises y sus respectivos estados/provinc

Muy bueno el dato, pero yo no lo haría en dos tablas separadas sinó en una. ¿por qué? por el simple hecho de que la misma puede crecer usando la recursividad (estilo árbol).

ejemplo en PostgreSQL:

tabla "localizacion":

CREATE TABLE localizacion
(
id serial NOT NULL,
parent_id integer NOT NULL,
nombre character varying(128) NOT NULL,
CONSTRAINT pk_localizacion PRIMARY KEY (id)
)

con esta estructura tan simple yo puedo crear una locación de la siguiente manera:

País -> Estado -> Provincia -> Distrito -> Corregimiento

Esto aplica a los paises que lo utilicen, ejemplo, en mi país solo tenemos:

Pais -> Provincia -> Distrito -> Corregimiento

Para paises como México, Estados Unidos y demás que manejen estados sería como el primero, algunos no manejan provincia, eso simplemente se obvia y listo.

para hacer el insert, simple:

Código PHP:
insert into localizacion values(1,0,'Panamá');
insert into localizacion values(2,0,'Estados Unidos');
insert into localizacion values(3,0,'México');
insert into localizacion values(4,0,'Costa Rica'); 
donde el valor cero (0) representa el padre, esto quiere decir que nuestros padres serán los paises.

insertemos ahora hijos para Panamá:

Código PHP:
insert into localizacion values(5,1,'Los Santos');  //Provincia
insert into localizacion values(6,5,'Las Tablas');  //Distrito
insert into localizacion values(7,6,'Peña Blanca');  //Corregimiento 
Como ven, es una forma simple pero a la vez efectiva.

se preguntarán, pero como cargo esto en un drop down?

FACIL: Si sabemos que los que son parent_id = 0 son paises, pues solo es seleccionar esos y de ahi cuando se seleccione un pais, nos devolverá su codigo, ese código a su vez lo parseamos para sacar los hijos haciendo referencia al campo parent_id, ejemplo:

//seleccionamos los paises:

Código PHP:
select from localizacion where parent_id=
Esto nos devolverá: Panamá, Estados Unidos, México y Costa Rica.

y validamos si el pais que seleccionamos tiene hijos:

//supongamos que seleccionamos panama (id = 1)
Código PHP:
select from localizacion where parent_id=
esto nos devolverá: Los Santos
y comprobamos que "los santos" tenga hijo hacemos el paso anterior y así sucesivamente.... esto si se trabaja con full javascript y ajax se logra (asi lo hice yo).

Espero les sirva esto, esta es mi humilde contribución a este temita.

Saludos
__________________
Saruman

One Ring to rule them all, One Ring to find them, One Ring to bring them all and in the darkness bind them.