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 ;)