Aquí está la BD de Paises y Provincias de todo el mundo lista para instalar en Mysql, además tengo que colocar las ciudades de 12 países de América, por ahora solo están las de la Provincia de Buenos Aires.
Igualmente os pido la ayuda para mejorar el script y sea auto actualizable la ciudad, desde que se escoge el País.
Un saludo.
Aquí lo pongo para que alguien que si sepa (yo soy un ignorante), le arregle el detallito que falta:
http://galeon.com/mapachejp3/index.htm
En todo caso falta a futuro meter todas las ciudades, probarlo con
Argentina / Buenos Aires / Ciudades
Código PHP:
<?
// datos de conexion a la BD.
$servidor = "localhost"; // host
$usuario = "root";
$clave = "";
$basedatos = "listas"; // Indicar una Base de datos.
// si se ha pulsao el boton enviar ($enviado) se procesa el formulario ..
// Sino, se continua con el formulario y los nuevos valores de los Select ..
// OJO si se tienen mas varibles (mas <input> ) se van a perder sus valores a no ser
// que los obtengamos y se les de como valor inicial en el value= de cada uno segun corresponda.
if (!empty($_POST['enviado'])){
// Procesar el formulario ...
echo "Procesando formulario:<br>";
echo "Recibido id_tabla_padre: ".$_POST['id_padre']."<br>";
echo "Recibido id_tabla_hija: ".$_POST['id_hija']."<br>";
echo "Recibido id_tabla_nieta: ".$_POST['id_nieta'];
} else {
// Conexión a la BD
$conexion = mysql_connect($servidor, $usuario, $clave) or die(mysql_error());
mysql_select_db($basedatos, $conexion) or die(mysql_error());
// Obtener el $id_padre del envio a si mismo del formulario ..
if(isset($_POST['id_padre'])){
$id_padre=$_POST['id_padre'];
}
if(isset($_POST['id_hija'])){
$id_hija=$_POST['id_hija'];
}
// Inicio Formulario .. PHP_SELF enviamos a si mismo (a este script).
echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\">\n\n";
// Formar Selec "Padre".
echo "<select name=\"id_padre\" onChange=\"this.form.submit()\">\n";
echo "<option value=\"\"> Seleccione un Item </option>\n";
$SQLconsulta_padre="SELECT * FROM countries";
$consulta_padre = mysql_query($SQLconsulta_padre,$conexion) or die(mysql_error());
While ($registro_padre=mysql_fetch_assoc($consulta_padre )){
// Se mira si el ID del registro es el mismo q el $id_padre q recibimos si hemos cambiado el select hijo.
// Se selecciona en consecuencia (selected) la opción elegida.
if ($id_padre == $registro_padre['country_id']){
echo "<option value=\"".$registro_padre['country_id']."\" selected>".$registro_padre['name']."</option>\n";
} else {
echo "<option value=\"".$registro_padre['country_id']."\">".$registro_padre['name']."</option>\n";
}
}
echo "</select>\n\n";
mysql_free_result($consulta_padre); // Liberar memoria usada por consulta.
// Formar Select "Hijo"
echo "<select name=\"id_hija\" onChange=\"this.form.submit()\">\n";
// Si $id_padre no tiene valor (caso de que no se ha seleccionado ningua opcion del select hijo
// se muestra el mensaje de "seleccine un item" (del select padre).
if (!empty($id_padre)){
$SQLconsulta_hija="SELECT * FROM states WHERE country_id='$id_padre'";
$consulta_hija = mysql_query($SQLconsulta_hija,$conexion) or die(mysql_error());
// se mira el total de registros de la consulta .. si es 0 se muestra mensaje en el select ..
if (mysql_num_rows($consulta_hija) != 0){
While ($registro_hija=mysql_fetch_assoc($consulta_hija)) {
//echo "<option value=\"".$registro_hija['state_id']."\">".$registro_hija['name']."</option>\n";
if ($id_hija == $registro_hija['state_id']){
echo "<option value=\"".$registro_hija['state_id']."\" selected>".$registro_hija['name']."</option>\n";
} else {
echo "<option value=\"".$registro_hija['state_id']."\">".$registro_hija['name']."</option>\n";
}
}
} else {
echo "<option value=\"\"> No hay registros para este Item </option>";
}
} else {
echo "<option value=\"\"> <-- Seleccione un Item </option>";
}
mysql_free_result($consulta_hija); // Liberar memoria usada por consulta.
echo "</select>\n\n";
// Formar Select "Nieto"
echo "<select name=\"id_nieta\">\n";
//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
// se muestra el mensaje de "seleccine un item" (del select padre).
if (!empty($id_hija)){
$SQLconsulta_nieta="SELECT * FROM cities WHERE state_id='$id_hija'";
$consulta_nieta = mysql_query($SQLconsulta_nieta,$conexion) or die(mysql_error());
// se mira el total de registros de la consulta .. si es 0 se muestra mensaje en el select ..
if (mysql_num_rows($consulta_nieta) != 0){
While ($registro_nieta=mysql_fetch_assoc($consulta_nieta )) {
echo "<option value=\"".$registro_nieta['id']."\">".$registro_nieta['name']."</option>\n";
}
} else {
echo "<option value=\"\"> No hay registros para este Item </option>";
}
} else {
echo "<option value=\"\"> <-- Seleccione un Item </option>";
}
mysql_free_result($consulta_nieta); // Liberar memoria usada por consulta.
echo "</select>\n\n";
echo "<input type=\"submit\" name=\"enviado\" value=\" Enviar \" >\n\n";
echo "</form>\n";
}
?>