Tengo un formulario, dentro del cual se elige un pais en un select que se rellena con una tabla. Una vez elegido, mediante onChange se carga otra página donde se muestran las provincias de ese pais, tambien desde otra tabla:
Código:
<?php include("conexion_base_de_datos.php"); echo "<form action=\"segundo_formulario.php\" method=\"POST\">\n\n"; echo "<b>País: </b>"; // Formar Selec "Padre". echo "<select name=\"pais\" onChange=\"this.form.submit()\">\n"; echo "<option value=\"\"> Selecciona... </option>\n"; $SQLconsulta_padre="SELECT * FROM paises"; $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_nacion q recibimos si hemos cambiado el select hijo. // Se selecciona en consecuencia (selected) la opción elegida. if ($pais == $registro_padre['pais']){echo "<option value=\"".$registro_padre['pais']."\" selected>".$registro_padre['pais']."</option>\n"; } else {echo "<option value=\"".$registro_padre['pais']."\">".$registro_padre['pais']."</option>\n";} } echo "</select>\n\n"; mysql_free_result($consulta_padre); // Liberar memoria usada por consulta. echo "<br /><b>Provincia:</b>"; if (!empty($pais)){ echo "<select name=\"provincia\">\n";echo "<option value=\"bbb\">Cualquier provincia..</option>";echo "</select>\n\n"; } else {echo "<select name=\"provincia\">\n";echo "<option value=\"\">Elige antes un pais</option>";echo "</select>\n\n";} echo "<br />"; echo "<input type=\"submit\" name=\"enviado\" value=\" Enviar \" >\n\n"; echo "</form>\n"; ?>
En la segunda página, muestro las provincias:
Código:
Aunque la segunda página es igual a la primera, queda algo feo porque según el ancho de banda que se tenga se nota la recarga.<?php $pais=$_POST["pais"]; $provincia=$_POST["provincia"]; include("conexion_base_de_datos.php"); echo "<form action=\"procesar_formulario.php\" method=\"POST\">\n\n"; //el pais lo ponemos SOLO con el dato del pais elegido echo "<select name=\"pais\">\n"; echo "<option value=\"$pais\">$pais</option>\n"; echo "</select>\n\n"; //ahora ponemos el select de la provincia con solo los datos de provincias del pais elegido if (!empty($pais)){ $SQLconsulta_hija="SELECT * FROM provincias WHERE pais='$pais'"; $consulta_hija = mysql_query($SQLconsulta_hija,$conexion) or die(mysql_error()); if (mysql_num_rows($consulta_hija) != 0){ echo "<select class=\"option_bus\" name=\"provincia\">\n"; While($registro_hija=mysql_fetch_assoc($consulta_hija)){ echo "<option value=\"".$registro_hija['provincia']."\">".$registro_hija['provincia']."</option>\n";} mysql_free_result($consulta_hija); echo "</select>\n\n"; } else {echo "<input type=\"text\" name=\"provincia\" size=\"35\" maxlenght=\"35\" />";} } else {echo "<select name=\"provincia\">\n";echo "<option value=\"\">Selecciona antes un pais</option>";echo "</select>\n\n";} echo "<input type=\"submit\" name=\"enviado\" value=\" Enviar \" >\n\n"; echo "</form>\n"; ?>
Mi pregunta es: Mi pregunta es: si por ejemplo tengo la página con varios divs, ¿cómo tengo que hacerlo para que se recargue en la primera página solo el div id="pais-provincia"?
<html>
<body>
<div id=cabecera">mi cabecera</div>
<div id="menu">mi menu</div>
<div id="cuerpo>el cuerpo de la pagina con el formulario ....
<div id="empresa">por ejemplo el select de empresas</div>
<div id="pais-provincia">
<div id="pais">aqui el select con los paises</div>
<div id="provincia">aqui el select con las provincias</div>
</div>
<div id="otros-selects">aqui mas selects</div>
<div id="submit">Enviar</div>
</body>
</html>