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