Casi todos nos habremos encontrado con este problema a la hora de abordar el desarrollo de algunas aplicaciones:
Tener la lista de provincias de España en la base de datos, poder saber qué provincia es a partir del código postal, tener el listado de poblaciones de una determinada provincia.
Seguro que a más de uno le viene bien lo que dejo aquí ;)
<?php $provincias = array ( array ('id' => "01", "nombre" => "ALAVA"), array ('id' => "02", "nombre" => "ALBACETE"), array ('id' => "03", "nombre" => "ALICANTE"), array ('id' => "04", "nombre" => "ALMERIA"), array ('id' => "33", "nombre" => "ASTURIAS"), array ('id' => "05", "nombre" => "AVILA"), array ('id' => "06", "nombre" => "BADAJOZ"), array ('id' => "08", "nombre" => "BARCELONA"), array ('id' => "09", "nombre" => "BURGOS"), array ('id' => "10", "nombre" => "CACERES"), array ('id' => "11", "nombre" => "CADIZ"), array ('id' => "39", "nombre" => "CANTABRIA"), array ('id' => "12", "nombre" => "CASTELLON"), array ('id' => "51", "nombre" => "CEUTA"), array ('id' => "13", "nombre" => "CIUDAD REAL"), array ('id' => "14", "nombre" => "CORDOBA"), array ('id' => "15", "nombre" => "CORUÑA, A"), array ('id' => "16", "nombre" => "CUENCA"), array ('id' => "17", "nombre" => "GIRONA"), array ('id' => "18", "nombre" => "GRANADA"), array ('id' => "19", "nombre" => "GUADALAJARA"), array ('id' => "20", "nombre" => "GUIPUZCOA"), array ('id' => "21", "nombre" => "HUELVA"), array ('id' => "22", "nombre" => "HUESCA"), array ('id' => "07", "nombre" => "ILLES BALEARS"), array ('id' => "23", "nombre" => "JAEN"), array ('id' => "24", "nombre" => "LEON"), array ('id' => "25", "nombre" => "LLEIDA"), array ('id' => "27", "nombre" => "LUGO"), array ('id' => "28", "nombre" => "MADRID"), array ('id' => "29", "nombre" => "MALAGA"), array ('id' => "52", "nombre" => "MELILLA"), array ('id' => "30", "nombre" => "MURCIA"), array ('id' => "31", "nombre" => "NAVARRA"), array ('id' => "32", "nombre" => "OURENSE"), array ('id' => "34", "nombre" => "PALENCIA"), array ('id' => "35", "nombre" => "PALMAS, LAS"), array ('id' => "36", "nombre" => "PONTEVEDRA"), array ('id' => "26", "nombre" => "RIOJA, LA"), array ('id' => "37", "nombre" => "SALAMANCA"), array ('id' => "38", "nombre" => "SANTA CRUZ DE TENERIFE"), array ('id' => "40", "nombre" => "SEGOVIA"), array ('id' => "41", "nombre" => "SEVILLA"), array ('id' => "42", "nombre" => "SORIA"), array ('id' => "43", "nombre" => "TARRAGONA"), array ('id' => "44", "nombre" => "TERUEL"), array ('id' => "45", "nombre" => "TOLEDO"), array ('id' => "46", "nombre" => "VALENCIA"), array ('id' => "47", "nombre" => "VALLADOLID"), array ('id' => "48", "nombre" => "VIZCAYA"), array ('id' => "49", "nombre" => "ZAMORA"), array ('id' => "50", "nombre" => "ZARAGOZA") ); ?>
Es un array PHP con los nombres de las provincias y los dos primeros digitos (id) del código postal que le corresponde. No obstante, hay algunas excepciones en esto de los códigos postales. Aquí otra utilidad:
<script type="text/javascript"> ///////////////////////////////////////// // // CODIGO POSTAL // ///////////////////////////////////////// // // Función constructora del objeto vector // Este objeto se usa como matriz asociativa // function Vector() { this["43421"]="Barcelona"; this["34492"]="Burgos"; this["01427"]="Burgos"; this["34815"]="Burgos"; this["39232"]="Burgos"; this["01211"]="Burgos"; this["42142"]="Burgos"; this["34260"]="Burgos"; this["26212"]="Burgos"; this["14449"]="Ciudad Real"; this["02636"]="Cuenca"; this["28190"]="Guadalajara"; this["08717"]="Guadalajara"; this["08619"]="Lleida"; this["22583"]="Lleida"; this["08281"]="Lleida"; this["22584"]="Lleida"; this["08697"]="Lleida"; this["43449"]="Lleida"; this["08289"]="Lleida"; this["32151"]="Lugo"; this["02438"]="Murcia"; this["04690"]="Murcia"; this["04647"]="Murcia"; this["03657"]="Raspay"; this["50686"]="Navarra"; this["09471"]="Segovia"; this["26127"]="Soria"; this["28310"]="Toledo"; this["02215"]="Valencia"; this["42269"]="Zaragoza"; this["44591"]="Zaragoza"; this["22808"]="Zaragoza"; this["42220"]="Zaragoza"; this["22806"]="Zaragoza"; } /////////////////////////////////////////////////////// // // Nombre de provincia como función del CPostal // function obtener_provincia_de_cp(codpos){ // A esta func. la llamamos directamente al perder el foco los campos // cod. postal de cada sección. var nodefinido; // Necesario para comparar con 'undefined' var tiponodefinido,tipoexc; var cod = new Array(); // Vector que asocia CP con Provincia var exc = new Vector();// Vector asociativo para las excepciones cod[1]="Alava";cod[2]="Albacete";cod[3]="Alicante"; cod[4]="Almeria";cod[5]="Avila";cod[6]="Badajoz"; cod[7]="Illes Balears";cod[8]="Barcelona";cod[9]="Burgos"; cod[10]="Caceres"; cod[11]="Cadiz";cod[12]="Castellon";cod[13]="Ciudad Real"; cod[14]="Cordoba";cod[15]="A Coruña";cod[16]="Cuenca"; cod[17]="Girona";cod[18]="Granada";cod[19]="Guadalajara"; cod[20]="Guipuzcoa"; cod[21]="Huelva";cod[22]="Huesca";cod[23]="Jaen";cod[24]="Leon"; cod[25]="Lleida";cod[26]="La Rioja";cod[27]="Lugo";cod[28]="Madrid"; cod[29]="Malaga";cod[30]="Murcia"; cod[31]="Navarra";cod[32]="Ourense";cod[33]="Asturias";cod[34]="Palencia"; cod[35]="Las Palmas";cod[36]="Pontevedra";cod[37]="Salamanca"; cod[38]="S.C. Tenerife";cod[39]="Cantabria";cod[40]="Segovia"; cod[41]="Sevilla";cod[42]="Soria";cod[43]="Tarragona";cod[44]="Teruel"; cod[45]="Toledo";cod[46]="Valencia";cod[47]="Valladolid";cod[48]="Vizcaya"; cod[49]="Zamora";cod[50]="Zaragoza"; cod[51]="Ceuta";cod[52]="Melilla"; if (!isNaN(codpos)){ if (codpos > 999 && codpos < 53000 && codpos.length == 5){ var Prov = codpos.substring(0,2); if (Prov < 10) Prov=codpos.substring(1,2); tiponodefinido= typeof nodefinido; tipoexc= typeof exc[codpos]; if (tipoexc != tiponodefinido) // Si es una excepcion... Prov = exc[codpos]; // obtenemos el valor del vector else // si no lo es... Prov = cod[Prov]; // lo pillamos de la tabla cod Prov = Prov.toUpperCase(); return Prov; } } return ''; } </script>
Y como hoy me siento generoso :P, aquí os coloco un XML con todas las provincias y sus correspondientes localidades.
El Arbol XML tiene la siguiente estructura:
<lista> <provincia id="01"> <nombre><![CDATA[ALAVA]]></nombre> <localidades> <localidad c="0"><![CDATA[ABERASTURI]]></localidad> <localidad c="0"><![CDATA[ABETXUKO]]></localidad> <localidad c="0"><![CDATA[ABEZIA]]></localidad> <localidad c="0"><![CDATA[ABORNIKANO]]></localidad> <localidad c="0"><![CDATA[ACEBEDO]]></localidad> <localidad c="0"><![CDATA[ACILU]]></localidad> <localidad c="0"><![CDATA[ACOSTA]]></localidad> ... </localidades> </provincia> ... <provincia id="29"> <nombre><![CDATA[MALAGA]]></nombre> <localidades> <localidad c="0"><![CDATA[RONDA]]></localidad> <localidad c="0"><![CDATA[MALAGA]]></localidad> ... </localidades> </provincia> </lista>
Podeis descargaros el XML completo en este enlace (zip).
Espero que os sea de ayuda ;)
Gracias!!!
Se sale… llevo varios dÃas rompiéndome el coco con esto, a ver si puedo componer bien el código para que el formulario funcione….ya te contaré.
Muchas gracias! eres un crack!
Me gustarÃa tener el listado de todas las localidades y barrios de Málaga capital y provincia por su código postal.
¿Cómo lo puedo conseguir?
Un saludo.
Julián
Hola Julián,
imagino que puedes pedÃrselo a correos (www.correos.es). Quizá ellos puedan darte un fichero con toda la lista.
Por cierto, si lo consigues, pásamelo ;)
Saludos
Hola¡¡¡¡
Me gustaria saver los codigos postales con todos los barrios de zaragoza.
donde lo podria encontrar??? o si alguien lo save xfa ke me lo diga.
Gracias
Hola buenas. Necesito un listado con los códigos postales de Madrid capital. Los he buscado en varios buscadores de internet, tanto Madrid tanta capital, tanta mierda que de berÃan barrer.
Disculpen las blasfemias, y gracias anticipadas.
Sin otro particulra, un cordial saludo: AROA
Hola,
como comentaba más arriba, creo que podrÃas pedÃrselos a los responsables de correos (http://www.correos.es). Quizá ellos puedan proporcionarte un listado.
Saludos
Aún no lo he usado, pero ya te doy las gracias!
Me estoy volviendo loco con esto, lo necesito apra importarlo a una base de datos Oracle para mi proyecto fin de carrera, dios que tortura, asi que esto no me sirve demasiado porque no quisiera tenerlo metidos en arrays si no en base de datos, pero gracias, seguro q a mucha gente como yo le salvas la vida, jeje.Lo de correos….no cuentes con ellos, cobran 600 euros por esos dats aunque deberian ser publicos, asi que eso es lo que hay.
PD: yo de todas formas se lo he pedido a correos y les e suplicado haber si cuela
Excelente trabajo, seguro que alguna vez lo uso, lo he posteado en mi blog.
http://www.camyna.com/wordpress/2007/05/03/codigo-en-php-de-todas-las-localidades-espanolas/
Hola quisiera saber los codigos postales por locolidades de la comunidad de Madrid. espero me envies pronto porque me urge . Gracias
por favor les pido que me envien el codigo de la ciudad de Villanueva urgente…muchas gracias…..saludos emma
Hola Emma,
puedes usar el buscador de codigos postales:
http://www.ingeniuz.com/codigos-postales/
buenas tardes a todos, viendo que tenemos practicamente para todos los gustos, he leido que alguién la necesitaba para BBDD, pues aquà va para MySQL. un saludo a tod@s
—
— Estructura de tabla para la tabla `provincias`
—
CREATE TABLE `provincias` (
`ID` int(11) NOT NULL auto_increment,
`provincia` varchar(255) NOT NULL default »,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=53 ;
—
— Volcar la base de datos para la tabla `provincias`
—
INSERT INTO `provincias` VALUES (1, ‘ÃLAVA’);
INSERT INTO `provincias` VALUES (2, ‘ALBACETE’);
INSERT INTO `provincias` VALUES (3, ‘ALICANTE’);
INSERT INTO `provincias` VALUES (4, ‘ALMERÃA’);
INSERT INTO `provincias` VALUES (5, ‘ASTURIAS’);
INSERT INTO `provincias` VALUES (6, ‘ÃVILA’);
INSERT INTO `provincias` VALUES (7, ‘BADAJOZ’);
INSERT INTO `provincias` VALUES (8, ‘BARCELONA’);
INSERT INTO `provincias` VALUES (9, ‘BURGOS’);
INSERT INTO `provincias` VALUES (10, ‘CÃCERES’);
INSERT INTO `provincias` VALUES (11, ‘CÃDIZ’);
INSERT INTO `provincias` VALUES (12, ‘CANTABRIA’);
INSERT INTO `provincias` VALUES (13, ‘CASTELLÓN’);
INSERT INTO `provincias` VALUES (14, ‘CEUTA’);
INSERT INTO `provincias` VALUES (15, ‘CIUDAD REAL’);
INSERT INTO `provincias` VALUES (16, ‘CÓRDOBA’);
INSERT INTO `provincias` VALUES (17, ‘CUENCA’);
INSERT INTO `provincias` VALUES (18, ‘GIRONA’);
INSERT INTO `provincias` VALUES (19, ‘GRANADA’);
INSERT INTO `provincias` VALUES (20, ‘GUADALAJARA’);
INSERT INTO `provincias` VALUES (21, ‘GUIPÚZCOA’);
INSERT INTO `provincias` VALUES (22, ‘HUELVA’);
INSERT INTO `provincias` VALUES (23, ‘HUESCA’);
INSERT INTO `provincias` VALUES (24, ‘ISLAS BALEARES’);
INSERT INTO `provincias` VALUES (25, ‘JAÉN’);
INSERT INTO `provincias` VALUES (26, ‘LA CORUÑA’);
INSERT INTO `provincias` VALUES (27, ‘LA RIOJA’);
INSERT INTO `provincias` VALUES (28, ‘LAS PALMAS’);
INSERT INTO `provincias` VALUES (29, ‘LEÓN’);
INSERT INTO `provincias` VALUES (30, ‘LLEIDA’);
INSERT INTO `provincias` VALUES (31, ‘LUGO’);
INSERT INTO `provincias` VALUES (32, ‘MADRID’);
INSERT INTO `provincias` VALUES (33, ‘MÃLAGA’);
INSERT INTO `provincias` VALUES (34, ‘MELILLA’);
INSERT INTO `provincias` VALUES (35, ‘MURCIA’);
INSERT INTO `provincias` VALUES (36, ‘NAVARRA’);
INSERT INTO `provincias` VALUES (37, ‘ORENSE’);
INSERT INTO `provincias` VALUES (38, ‘PALENCIA’);
INSERT INTO `provincias` VALUES (39, ‘PONTEVEDRA’);
INSERT INTO `provincias` VALUES (40, ‘SALAMANCA’);
INSERT INTO `provincias` VALUES (41, ‘SANTA CRUZ DE TENERIFE’);
INSERT INTO `provincias` VALUES (42, ‘SEGOVIA’);
INSERT INTO `provincias` VALUES (43, ‘SEVILLA’);
INSERT INTO `provincias` VALUES (44, ‘SORIA’);
INSERT INTO `provincias` VALUES (45, ‘TARRAGONA’);
INSERT INTO `provincias` VALUES (46, ‘TERUEL’);
INSERT INTO `provincias` VALUES (47, ‘TOLEDO’);
INSERT INTO `provincias` VALUES (48, ‘VALENCIA’);
INSERT INTO `provincias` VALUES (49, ‘VALLADOLID’);
INSERT INTO `provincias` VALUES (50, ‘VIZCAYA’);
INSERT INTO `provincias` VALUES (51, ‘ZAMORA’);
INSERT INTO `provincias` VALUES (52, ‘ZARAGOZA’);
me gustaria tener un listado de todos los códigos postales de españa. el de aguimes es el 35260 en la provincia de las palmas de gran canaria. y ¿los demás?……. gracias
Hola Manuel
He intentado bajarme el codigo completo, pero me da un error.
¿Esta correcto el codigo?
¿Como es que no me lo puedo bajar?
Saludos
Hola,
acabo de probar el enlace y funciona sin problemas ¿qué error te da?
Yo he metido en MS Access 97 una tabla con todas las poblaciones de España, con su cód. postal y su código INE (Instituto Nacional de EstadÃstica).
Si alguien lo quiere, que diga dónde lo puedo colgar y lo cuelgo.
Eso sÃ, sólo están las poblaciones de cód. postal único, es decir, los que tienen más de uno dependiendo de la calle no están.
Si alguien tiene esa parte, que lo pase y lo incorporo.
Tu página me ha sacado de un apuro; necesitaba un código postal con urgencia. Muchas gracias. Te la he insertado en el directorio de enlaces de mi web, INDAGA.net. Es lo menos que podÃa hacer. Gracias otra vez.
Salu2,
Guillermo
Gracias a ti, Guilermo ;)
Estaba buscando el código postal de una calle de la Manga (Murcia), pero solo aparece la Manga del Mar menor, que no es la misma Manga a que me refiero, porque la que busco es la que llaman bulgarmente Manga del Mar Mayor, que está pasando por Cabo de Palos.
He mirado en las páginas de correos y telégrafos, he buscado por «guia de códigos», pero en ningún lugar he tenido éxito para sacar en concreto la información, todo era para ahorrar el ir hasta correos a ojear el libro de códigos que allà disponen para el público.
Mi comentario que no otro, es que es una gran vergüenza que con tantos medios en un paÃs que se supone desarrollado, exista tanta falta de información y de sencillez. Con lo poco que cuesta colgar tal cual las páginas del librito de correos en internet para que uno se abastezca sencillamente. Estamos carentes de gente que cumpla con su deber n la administración. A ver si apartir de ahora alguien lee este articulo y se pone manos a la obra para ordenar a quien corresponda que cumpla con su labor.
Por si a alguien le sirve, aquà van algunos enlaces interesantes sobre el tema:
http://www.carmepla.com/es/2009/01/05/tablas-de-paises-provincias-municipios-y-codigos-postales/
http://download.geonames.org/export/dump/
http://codigos-postales.albin-world.com/
Hola: Tengo los codigos de las calles de Huesca capital. Por mi trabajo lo necesito todos los dÃas. Pero la ciudad ha crecido y mi listado no. Necesitaria actualizarlo pues hay bastantes calles nuevas. ¿alguien sabe donde puedo hacerlo? Gracias anticipadas
Hola
Este mensaje es para juanjo, solo comentarte que hay varios codigos que estan mal, Ceuta es el 51 y Melilla es el 52, por eso al final sale Zaragoza con el 52 y es el 50 y Madrid sale con el 32 y debe ser el 28
Posiblemente haya otros mal
Saludos y hasta pronto
Juan
Hola de nuevo
Os envio los codigops correctos
01;ALAVA/ARABA
02;ALBACETE
03;ALICANTE/ALACANT
04;ALMERÃA
05;AVILA
06;BADAJOZ
07;ILLES BALEARS/I. BALEARES
08;BARCELONA
09;BURGOS
10;CÃCERES
11;CÃDIZ
12;CASTELLÓN/CASTELLÓ
13;CIUDAD REAL
14;CÓRDOBA
15;A CORUÑA/LA CORUÑA
16;CUENCA
17;GIRONA/GERONA
18;GRANADA
19;GUADALAJARA
20;GUIPUZKOA/GUIPÚZCOA
21;HUELVA
22;HUESCA
23;JAÉN
24;LEÓN
25;LLEIDA/LÉRIDA
26;LA RIOJA
27;LUGO
28;MADRID
29;MÃLAGA
30;MURCIA
31;NAVARRA
32;OURENSE/ORENSE
33;ASTURIAS
34;PALENCIA
35;LAS PALMAS
36;PONTEVEDRA
37;SALAMANCA
38;STA CRUZ DE TENERIFE
39;CANTABRIA
40;SEGOVIA
41;SEVILLA
42;SORIA
43;TARRAGONA
44;TERUEL
45;TOLEDO
46;VALENCIA
47;VALLADOLID
48;VIZCAYA/BIZKAIA
49;ZAMORA
50;ZARAGOZA
51;CEUTA
52;MELILLA
Saludos y hasta otra
Juan