Foros del Web » Programando para Internet » PHP »

Necesito que alguien me oriente

Estas en el tema de Necesito que alguien me oriente en el foro de PHP en Foros del Web. Hola: Tengo un formulario, dentro del cual se elige un pais en un select que se rellena con una tabla. Una vez elegido, mediante onChange ...
  #1 (permalink)  
Antiguo 25/06/2010, 03:19
 
Fecha de Ingreso: noviembre-2005
Mensajes: 86
Antigüedad: 18 años, 4 meses
Puntos: 0
Necesito que alguien me oriente

Hola:

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:
<?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";
                 ?>
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.

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>
  #2 (permalink)  
Antiguo 25/06/2010, 03:21
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 18 años, 7 meses
Puntos: 19
Respuesta: Necesito que alguien me oriente

Pues la mejor solución es utilizar AJAX. Para ello, te invito a que utilices la librería jQuery que es una maravilla.

Seguro que encuentras multitud de ejemplos por internet.

Un saludo.
  #3 (permalink)  
Antiguo 25/06/2010, 03:52
 
Fecha de Ingreso: noviembre-2005
Mensajes: 86
Antigüedad: 18 años, 4 meses
Puntos: 0
Respuesta: Necesito que alguien me oriente

Muchas gracias por la rápida respuesta.

Ya había mirado en Google algunas páginas sobre esta libreria, y la forma de recargar ese div. Me viene bien porque confirmas la idea que tenía.

La duda que tengo es que la recarga se realiza, si no me equivoco, con javascript, con lo cual no le funcionaria a aquellas personas que tengan deshabilitado Javascrit en su explorador, ¿no?.
  #4 (permalink)  
Antiguo 25/06/2010, 04:10
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 18 años, 7 meses
Puntos: 19
Respuesta: Necesito que alguien me oriente

Cita:
Iniciado por informa Ver Mensaje
Muchas gracias por la rápida respuesta.

Ya había mirado en Google algunas páginas sobre esta libreria, y la forma de recargar ese div. Me viene bien porque confirmas la idea que tenía.

La duda que tengo es que la recarga se realiza, si no me equivoco, con javascript, con lo cual no le funcionaria a aquellas personas que tengan deshabilitado Javascrit en su explorador, ¿no?.
Exacto.

La pregunta es: ¿quién tiene deshabilitado javascript en su navegador?
  #5 (permalink)  
Antiguo 25/06/2010, 04:18
 
Fecha de Ingreso: noviembre-2005
Mensajes: 86
Antigüedad: 18 años, 4 meses
Puntos: 0
Respuesta: Necesito que alguien me oriente


En eso tienes razón. Solo un pequeño porcentaje de "expertos" lo deshabilita. La gran "masa" no hace ningún cambio ...... y los "expertos" saben muy bien lo que tienen que hacer en esos casos.
  #6 (permalink)  
Antiguo 25/06/2010, 07:30
Avatar de martin0341  
Fecha de Ingreso: septiembre-2006
Ubicación: Rosario - Santa Fe
Mensajes: 296
Antigüedad: 17 años, 7 meses
Puntos: 8
Respuesta: Necesito que alguien me oriente

Te recominedo que veas este ejemplo de select dependientes para lo que queres hacer, creo que te va a servir de mucho:

http://www.formatoweb.com.ar/ajax/se...pendientes.php

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:58.