Jump to content

CORREGIRME onchange refresca la pag.....y los select


Recommended Posts

LES explico.........

 

tengo 2 select que me funcionan bien....al seleccionar el pais me aparecen las ciudades correspondientes al pais seleccionado,,,,

 

el drama esta en que cuando agrego una pagina en el formulario....en la parte ACTION.... me envia automaticamente a esa pagina...al seleccionar algun dato del primer select.....

 

el problema creo ke esta en el onchange=form1.submit();

 

ahy va el codigo

 

 

<?php

mysql_connect("localhost","root")or die ('Ha fallado la conexión: '.mysql_error());

mysql_select_db("bdeinlab")or die ('Ha fallado la conexión: '.mysql_error());

$re=mysql_query("select * from pais");

//el @ sirve para que no salga ese mensaje de NOTICE al momento de ejecutar por 1ra ve nuestro codigo.

if(isset($_POST["pais"])){

$pais=$_POST["pais"];

$re1=mysql_query("select * from ciudad where cod_pais=".$pais."");

$re2=mysql_query("select nombre from pais where cod_pais=".$pais."");

//$j[]=mysql_fetch_array($re2);

}else{

@$j[nombre]="seleccione pais"; }

?>

<form id="form1" name="form1" method="post" action="cliente.php">

 

Pais: <select name="pais" size="1" id="pais" onchange="form1.submit()" style="width:200px">

<option value="" > Seleccione Pais</option>

<?php

while($f=mysql_fetch_array($re)){

 

$sel = ($f[cod_pais]==$pais) ? "SELECTED" : "";

 

echo"<option value='".$f[cod_pais]."' ".$sel.">".$f[nombre]."</option>";

 

}

 

?>

</select>

<br />

Ciudad: <select name="ciudad" size="1" id="ciudad" style="width:200px">

<?php

while($f1=mysql_fetch_array($re1)){

echo"<option>".$f1[nombre]."</option>";

}

?>

</select>

</p>

</form>

 

sin no colo nada en el action...funciona bien....pero necesito colocar una pagina ahy, para keme registre estos datos en la BD

Link to comment
Share on other sites

haber...

 

se me ocurren dos soluciones

una es que, en ves de enviar el formulario (form1.submit()), recargues la página y envies un parámetro por get del país que esta seleccionado, para eso cambia el onchange por esto:

 

onchange=location.href='tupagina.php?pais='+this.value

 

y además debes cambiar el tipo que estas reciebiendo

 

if(isset($_GET["pais"])){

$pais=$_GET["pais"];

 

y como segunda opción es hacerlo todo por javascript(jQuery) utilizando ajax, es sencillo y mas cómodo.

 

Entonces intenta con la primera opción para ver como te va.

Link to comment
Share on other sites

funciono...con el unico detalle es que estos 2 select tienen ke ir al principio porque sino borraran los otros campos anteriores.....al refresacarlo...por ejemplo si pongo <input name="nombre" />-.......pero como que ya me aburrio el tema asi ke en el formulario colocare estos dos select pais y ciudad al principio ....

 

gracias compadre un 7 para ti

Link to comment
Share on other sites

  • 4 weeks later...

Prueba utilizar ajax, osea, la solución anterior es correcta,pero con ajax se solucionan todos tus problemas de recarga de pagina y por ende perdida de datos.

 

no es necesario usar jquery, de hecho te recomiendo que uses ajax puro, para conocer la logica de ajax, es bastante interesante,

 

Saludos y suerte!

Link to comment
Share on other sites

el evento onchange se activa cuando el input el cual se esta concentrado (focus) cambia de valor, es decir onchange por si mismo no es un refrescador de paginas, sino que un evento.

 

Lo que sucede en tu particular caso es que tu al ocupar el evento onchange, pides que se ejecute esto form1.submit(); esto significa que se entrega (envia) el formulario con name (nombre) form1, al entregar (enviar) un formulario la pagina se refresca.

 

aca te dejo un ejemplo

 

<form name="form1">

Este evento onchange no refresca <input type="text" onchange="document.getElementById('a').value=this.value;" /> <input type="text" id="a"/>

Este evento onchange si refresca <input type="text" onchange="form1.submit();">

</form>

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...