vipersuelo Posted February 15, 2011 Report Share Posted February 15, 2011 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 More sharing options...
nazhox Posted February 15, 2011 Report Share Posted February 15, 2011 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 More sharing options...
vipersuelo Posted February 15, 2011 Author Report Share Posted February 15, 2011 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 More sharing options...
sebifrost Posted March 12, 2011 Report Share Posted March 12, 2011 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 More sharing options...
cañangasñangas Posted March 16, 2011 Report Share Posted March 16, 2011 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now