Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema con formulario

Estas en el tema de Problema con formulario en el foro de PHP en Foros del Web. Buenas nose muy bien si esto va aqui o en el de javascript ya que tiene un pco de cada. Mi problema es el siguiente ...
  #1 (permalink)  
Antiguo 02/04/2013, 05:35
 
Fecha de Ingreso: noviembre-2011
Mensajes: 516
Antigüedad: 12 años, 4 meses
Puntos: 10
Problema con formulario

Buenas
nose muy bien si esto va aqui o en el de javascript ya que tiene un pco de cada.
Mi problema es el siguiente tengo un formulario de registro y me gustaría que si me equivoco al meter un dato y este no es aceptado por la validación cuando sale por ejemplo la contraseña no son iguales, al volver al registro esten los datos en l formulario menos la contraseña mire y se hace con este codigo:
<a href='javascript:history.back()'>Regresar</a>
Pero cuando doy a regresar no me ha guardado los datos se an borrado todos, que puede haber mal o si no es con ese como se puede hacer tal cosa?? un saludo. gracias.
  #2 (permalink)  
Antiguo 02/04/2013, 05:51
Avatar de bookmaster  
Fecha de Ingreso: febrero-2002
Ubicación: Toledo
Mensajes: 976
Antigüedad: 22 años, 2 meses
Puntos: 67
Respuesta: Problema con formulario

¿Porque no haces una función en la misma página del formulario para que se compruebe antes de enviarlo?
Si esta todo correcto retorna True, y sino que muestre el aviso y retorne False.
Luego con poner esto en el <form> antes del action te llama a la funcion y si esta todo ok se envia y sino no.
Código HTML:
Ver original
  1. onSubmit="return Comprobacion();"

Otra opción es que pases los valores a variables de sesión y las recuperes al darle a regresar, así no se pierden hasta que no este todo correcto.
__________________
Decir si te a funcionado la respuesta es ¡GRATIS!. Por favor indicarlo.
http://www.lohacemosweb.net
http://tutoriales.lohacemosweb.net
  #3 (permalink)  
Antiguo 02/04/2013, 05:53
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años
Puntos: 58
Respuesta: Problema con formulario

¿Envías los datos por GET o por POST?

Lo que deberías hacer primero es validar los datos con Javascript para evitar trabajo extra al servidor, si han rellenado los datos y demás los envías, en la página que recibes esos datos si hay algún error rediriges otra vez a la página anterior y envias otra vez los datos y el error.

Con esos datos que has recogido los puedes meter en un input o donde quieras. Por ejemplo
Código HTML:
Ver original
  1. <input type="text" name="nombre" value="<?php if (!empty($_GET['nombre'])) echo $_GET['nombre'];" />
  #4 (permalink)  
Antiguo 02/04/2013, 06:56
 
Fecha de Ingreso: noviembre-2011
Mensajes: 516
Antigüedad: 12 años, 4 meses
Puntos: 10
Respuesta: Problema con formulario

alyciashape no entiendo muy bien lo que hago con esto yo miro si estan vacios los campos no es asi?? y luego mando los datos y ago ayi otra comprovacion??y si no es correcto como dewelvo tales datos otra vez? lo de las variables de session seria una opcion pero nose si la mas correcta. gracias un saludo.
  #5 (permalink)  
Antiguo 02/04/2013, 07:07
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 11 meses
Puntos: 76
Respuesta: Problema con formulario

hola

para ese tipo de validaciones es mejor Javascript ,asi como esta tienes que hacer mas trabajo, aunque te doy una idea

me imagino envias la info por post mediante un formulario .... entonces en el archivo donde recibes la informacion haz esto:

Código PHP:
Ver original
  1. unset($_SESSION["info_formulario"]);//eliminamos la sesion de entrada
  2. $_SESSION["info_formulario"] = $_REQUEST;//creamos la sesion asignandole un arreglo con la informacion del formulario

como tu lo que haces es redireccionar en caso de que este mal alguna validacion al formulario, debes hacer esto ahora en
el archivo donde esta el formulario

en la primera linea del formulario coloca:

Código HTML:
Ver original
  1. <?php
  2. extract($_SESSION["info_formulario"]);// como la sesion es un arreglo ej:array(array("nombre"=>"pepito")); con extract lo que haces es que cada indice de mi arreglo se convierta en una variable por lo que ya no es necesario hacer $_SESSION["info_formulario"]["nombre"] , si basta con llamar al indice con $nombre
  3. ?>
  4. <input type="text" value="<?php echo $nombre;?>" name="nombre">

Última edición por informacionsys; 02/04/2013 a las 07:13
  #6 (permalink)  
Antiguo 05/04/2013, 09:12
 
Fecha de Ingreso: noviembre-2011
Mensajes: 516
Antigüedad: 12 años, 4 meses
Puntos: 10
Respuesta: Problema con formulario

al final lo estoy validando con javascritp aunque no me convence mucho pero weno es lo mejor que creo que puedo hacer, aora tengo un problema si pongo el boton en tipo submit no me valida si lo pongo en button se valida pero no me manda el fomulario el formulario y la validacion es la siguiente:
Código PHP:
Ver original
  1. <?php
  2. /*session_start();
  3. if($_SESSION['VALIDO']!='SI')
  4. {
  5.     header ("Location: index.php");
  6. }*/
  7. include('../conf/config.php');
  8. $paises=mysql_query("SELECT * FROM pais",$conexion);
  9. $inicio=1;
  10. $final=31;
  11. $inicio_ano=1950;
  12. $fin_ano=date("Y");
  13. $mes=1;
  14. $ulti_mes=12;
  15. ?>
  16. <html>
  17. <head>
  18. <title>Registro usuario</title>
  19. </head>
  20. <link href="../css/estilo.css" rel="stylesheet" />
  21. <script type="text/javascript" src="../js/jquery.js"></script>
  22. <script>
  23. function validar(){
  24.     //valido el nombre
  25.     if (document.form1.username0.value.length==0)
  26.     {
  27.          alert("Tiene que escribir su nombre.")
  28.          document.form1.username0.focus()
  29.          return 0;
  30.     }
  31.     if(document.form1.username0.value.length<=3)
  32.     {
  33.         alert("Tiene que contener más de 3 caracteres.")
  34.         document.form1.username0.focus()
  35.         return 0;
  36.     }
  37.     if(document.form1.username0.value.length>25)
  38.     {
  39.         alert("El número máximo de caracteres es 25.")
  40.         document.form1.username0.focus()
  41.         return 0;
  42.     }
  43.         document.form1.submit();
  44. }
  45. </script>
  46. <body bgcolor="#0066FF">       
  47. <div align="center"><strong><span class="logo">Facenty</span></strong></div>
  48. <div align="center" id="registro"><div id="cabe_regis" align="center">Registro</div>
  49.   <strong style="font-size:18px;">Unete a Facenty  </strong> Todos los campos son obligatorios.
  50.   <table border="0" <!--width="15%"-->
  51.         <tr>
  52.             <td><b><font face="Verdana" size="1" >Nombre:</font></b></td>
  53.             <td>
  54.   <label>
  55.   <form name="form1" method="post" onSubmit="insertar.php">
  56.   <input name="username" type="text" id="username0"></label></td>
  57.         </tr>
  58.         <tr>
  59.             <td><b><font face="Verdana" size="1" >Apellidos:</font></b></td>
  60.             <td>
  61.   <label>
  62.   <input name="apellidos" type="text" id="apellido"></label></td>
  63.         </tr>
  64.         <tr>
  65.             <td><b><font face="Verdana" size="1" >Contraseña:</font></b></td>
  66.             <td>
  67.     <label>
  68.       <input name="password" type="password" id="password"></label></td>
  69.         </tr>
  70.         <tr>
  71.             <td><b><font face="Verdana" size="1" >Repetir contraseña:</font></b></td>
  72.             <td>
  73.     <label>
  74.       <input name="password2" type="password" id="password2"></label></td>
  75.         </tr>
  76.         <tr>
  77.             <td>
  78.       <tr>
  79.             <td><b><font face="Verdana" size="1" >Pais:</font></b></td>
  80.             <td>
  81.     <label>
  82.     <select name="paises" id="pais">
  83.     <option selected="selected">España</option>
  84.     <?php while($pais=mysql_fetch_array($paises)){
  85.     echo '<option>'.utf8_decode($pais['pais']).'</option>'; }?>
  86.     </select></label>
  87.     <tr><td><b><font face="Verdana" size="1">Sexo:</font></b></td>
  88.     <td><input type="radio" name="sexo" value="hombre" id="sexo">Hombre<input type="radio" name="sexo" value="mujer" id="sexo">Mujer</td></tr>
  89.     <tr>
  90.             <td><b><font face="Verdana" size="1" >Fecha de nacimiento</font></b></td>
  91.         <td>   
  92.     <label>
  93.       <select name="dia"><?php while($inicio<=$final){echo '<option>'.$inicio.'</option>'; $inicio++;}?></select>
  94.       <select name="mes"><?php while($mes<=$ulti_mes){echo '<option>'.$mes.'</option>'; $mes++;}?></select>
  95.       <select name="ano"><?php while($inicio_ano<=$fin_ano){echo '<option>'.$inicio_ano.'</option>'; $inicio_ano++;}?></select>
  96.       </label></td></tr>
  97.       <tr id="cif"><td><b><font face="Verdana" size="1" >CIF:</font></b></td><td><input type="text"></td></tr>
  98.       <tr><td></td><td><input type="checkbox" id="condiciones" name="condiciones">Aceptas las <a href="http://www.forosdelweb.com/f18/condiciones.php">Condiciones de uso y privacidad</a> de Facenty.</td></tr>
  99.     <tr><td><label>
  100.    
  101.     <input type="submit" name="enviar" value="Registrarse" onClick="validar();"></label></td>
  102.     </form>
  103.         </tr>
  104.   </table>
  105. </div><div id="empresas"></div>
  106. </body>
  107. </html>
como puedo mandar el formulario con el input type button en el javvascript añadi un document.form.submit() pero no me funciona solo refresca la pagina no me manda ala de insertar.php gracias un saludo.
  #7 (permalink)  
Antiguo 05/04/2013, 10:30
Avatar de bookmaster  
Fecha de Ingreso: febrero-2002
Ubicación: Toledo
Mensajes: 976
Antigüedad: 22 años, 2 meses
Puntos: 67
Respuesta: Problema con formulario

Cita:
Iniciado por bookmaster Ver Mensaje
Luego con poner esto en el <form> antes del action te llama a la funcion y si esta todo ok se envia y sino no.
Código HTML:
Ver original
  1. onSubmit="return Comprobacion();"

Otra opción es que pases los valores a variables de sesión y las recuperes al darle a regresar, así no se pierden hasta que no este todo correcto.
Te puse que se hacia en el <form> no en el boton de submit

Código HTML:
<form name="form1" method="post" onSubmit="insertar.php"> 
En onSubmit llamas al JavaScript no a la página donde vas a mandar los datos. y te falta el action que es donde vas a mandar los datos.

Quedaría así:
Código HTML:
<form name="form1" method="post" onSubmit="return validar();" action="insertar.php"> 
Y el boton de enviar sería tipo submit.
Código HTML:
<input type="submit" name="enviar" value="Registrarse"> 
__________________
Decir si te a funcionado la respuesta es ¡GRATIS!. Por favor indicarlo.
http://www.lohacemosweb.net
http://tutoriales.lohacemosweb.net
  #8 (permalink)  
Antiguo 06/04/2013, 04:50
 
Fecha de Ingreso: noviembre-2011
Mensajes: 516
Antigüedad: 12 años, 4 meses
Puntos: 10
Respuesta: Problema con formulario

Al hacerlo como me as dixo me salta el mensaje de error y luego al darle a aceptar para quitar tal mensaje me lleva ala pag insertar nose si sigo aciendo algo mal este es mi nuevo codigo:
Código PHP:
Ver original
  1. <?php
  2. /*session_start();
  3. if($_SESSION['VALIDO']!='SI')
  4. {
  5.     header ("Location: index.php");
  6. }*/
  7. include('../conf/config.php');
  8. $paises=mysql_query("SELECT * FROM pais",$conexion);
  9. $inicio=1;
  10. $final=31;
  11. $inicio_ano=1950;
  12. $fin_ano=date("Y");
  13. $mes=1;
  14. $ulti_mes=12;
  15. ?>
  16. <html>
  17. <head>
  18. <title>Registro usuario</title>
  19. </head>
  20. <link href="../css/estilo.css" rel="stylesheet" />
  21. <script type="text/javascript" src="../js/jquery.js"></script>
  22. <script>
  23. function validar(){
  24.     //valido el nombre
  25.     if (document.form1.username0.value.length==0)
  26.     {
  27.          alert("Tiene que escribir su nombre.")
  28.          document.form1.username0.focus()
  29.          return 0;
  30.     }
  31.     if(document.form1.username0.value.length<=3)
  32.     {
  33.         alert("Tiene que contener más de 3 caracteres.")
  34.         document.form1.username0.focus()
  35.         return 0;
  36.     }
  37.     if(document.form1.username0.value.length>25)
  38.     {
  39.         alert("El número máximo de caracteres es 25.")
  40.         document.form1.username0.focus()
  41.         return 0;
  42.     }
  43.         document.form1.submit('insertar.php');
  44. }
  45. </script>
  46. <body bgcolor="#0066FF">       
  47. <div align="center"><strong><span class="logo">Facenty</span></strong></div>
  48. <div align="center" id="registro"><div id="cabe_regis" align="center">Registro</div>
  49.   <strong style="font-size:18px;">Unete a Facenty  </strong> Todos los campos son obligatorios.
  50.   <table border="0" <!--width="15%"-->
  51.         <tr>
  52.             <td><b><font face="Verdana" size="1" >Nombre:</font></b></td>
  53.             <td>
  54.   <label>
  55.   <form name="form1" method="post" onSubmit="validar();" action="insertar.php">
  56.   <input name="username" type="text" id="username0"></label></td>
  57.         </tr>
  58.         <tr>
  59.             <td><b><font face="Verdana" size="1" >Apellidos:</font></b></td>
  60.             <td>
  61.   <label>
  62.   <input name="apellidos" type="text" id="apellido"></label></td>
  63.         </tr>
  64.         <tr>
  65.             <td><b><font face="Verdana" size="1" >Contraseña:</font></b></td>
  66.             <td>
  67.     <label>
  68.       <input name="password" type="password" id="password"></label></td>
  69.         </tr>
  70.         <tr>
  71.             <td><b><font face="Verdana" size="1" >Repetir contraseña:</font></b></td>
  72.             <td>
  73.     <label>
  74.       <input name="password2" type="password" id="password2"></label></td>
  75.         </tr>
  76.         <tr>
  77.             <td>
  78.       <tr>
  79.             <td><b><font face="Verdana" size="1" >Pais:</font></b></td>
  80.             <td>
  81.     <label>
  82.     <select name="paises" id="pais">
  83.     <option selected="selected">España</option>
  84.     <?php while($pais=mysql_fetch_array($paises)){
  85.     echo '<option>'.utf8_decode($pais['pais']).'</option>'; }?>
  86.     </select></label>
  87.     <tr><td><b><font face="Verdana" size="1">Sexo:</font></b></td>
  88.     <td><input type="radio" name="sexo" value="hombre" id="sexo">Hombre<input type="radio" name="sexo" value="mujer" id="sexo">Mujer</td></tr>
  89.     <tr>
  90.             <td><b><font face="Verdana" size="1" >Fecha de nacimiento</font></b></td>
  91.         <td>   
  92.     <label>
  93.       <select name="dia"><?php while($inicio<=$final){echo '<option>'.$inicio.'</option>'; $inicio++;}?></select>
  94.       <select name="mes"><?php while($mes<=$ulti_mes){echo '<option>'.$mes.'</option>'; $mes++;}?></select>
  95.       <select name="ano"><?php while($inicio_ano<=$fin_ano){echo '<option>'.$inicio_ano.'</option>'; $inicio_ano++;}?></select>
  96.       </label></td></tr>
  97.       <tr id="cif"><td><b><font face="Verdana" size="1" >CIF:</font></b></td><td><input type="text"></td></tr>
  98.       <tr><td></td><td><input type="checkbox" id="condiciones" name="condiciones">Aceptas las <a href="http://www.forosdelweb.com/f18/condiciones.php">Condiciones de uso y privacidad</a> de Facenty.</td></tr>
  99.     <tr><td><label>
  100.    
  101.     <input type="submit" name="enviar" value="Registrarse"></label></td>
  102.     </form>
  103.         </tr>
  104.   </table>
  105. </div><div id="empresas"></div>
  106. </body>
  107. </html>
y aqui es donde tengo la función de los errores del formulario:
Código Javascript:
Ver original
  1. unction validar(){
  2.     //valido el nombre
  3.     if (document.form1.username0.value.length==0)
  4.     {
  5.          alert("Tiene que escribir su nombre.")
  6.          document.form1.username0.focus()
  7.          return 0;
  8.     }
  9.     if(document.form1.username0.value.length<=3)
  10.     {
  11.         alert("Tiene que contener más de 3 caracteres.")
  12.         document.form1.username0.focus()
  13.         return 0;
  14.     }
  15.     if(document.form1.username0.value.length>25)
  16.     {
  17.         alert("El número máximo de caracteres es 25.")
  18.         document.form1.username0.focus()
  19.         return 0;
  20.     }
  21.         document.form1.submit('insertar.php');
  22. }
  23. </script>
Porque acto seguido del alert me manda a insertar.php no entiendo que es lo que tengo mal un saludo gracias.
  #9 (permalink)  
Antiguo 06/04/2013, 05:20
Avatar de bookmaster  
Fecha de Ingreso: febrero-2002
Ubicación: Toledo
Mensajes: 976
Antigüedad: 22 años, 2 meses
Puntos: 67
Respuesta: Problema con formulario

Te estas comiendo el return
Y eso que te he puesto el código.
Código HTML:
<form name="form1" method="post" onSubmit="return validar();" action="insertar.php"> 
Y aqui:
Código Javascript:
Ver original
  1. <script>
  2. function validar(){
  3.     //valido el nombre
  4.     if (document.form1.username0.value.length==0)
  5.     {
  6.          alert("Tiene que escribir su nombre.")
  7.          document.form1.username0.focus()
  8.          return 0;
  9.     }
  10.     if(document.form1.username0.value.length<=3)
  11.     {
  12.         alert("Tiene que contener más de 3 caracteres.")
  13.         document.form1.username0.focus()
  14.         return 0;
  15.     }
  16.     if(document.form1.username0.value.length>25)
  17.     {
  18.         alert("El número máximo de caracteres es 25.")
  19.         document.form1.username0.focus()
  20.         return 0;
  21.     }
  22.         document.form1.submit('insertar.php');
  23. }
  24. </script>
Esta línea te sobra document.form1.submit('insertar.php');
Estas retornando 0 en vez de false y no retornas true en caso de ser cierto.

En principio tendría que ser:
Código Javascript:
Ver original
  1. <script>
  2. function validar(){
  3.     //valido el nombre
  4.     if (document.form1.username0.value.length==0)
  5.     {
  6.          alert("Tiene que escribir su nombre.")
  7.          document.form1.username0.focus()
  8.          return false;
  9.     }
  10.     if(document.form1.username0.value.length<=3)
  11.     {
  12.         alert("Tiene que contener más de 3 caracteres.")
  13.         document.form1.username0.focus()
  14.         return false;
  15.     }
  16.     if(document.form1.username0.value.length>25)
  17.     {
  18.         alert("El número máximo de caracteres es 25.")
  19.         document.form1.username0.focus()
  20.         return false;
  21.     }
  22.         return true;
  23. }
  24. </script>
__________________
Decir si te a funcionado la respuesta es ¡GRATIS!. Por favor indicarlo.
http://www.lohacemosweb.net
http://tutoriales.lohacemosweb.net
  #10 (permalink)  
Antiguo 06/04/2013, 05:30
 
Fecha de Ingreso: noviembre-2011
Mensajes: 516
Antigüedad: 12 años, 4 meses
Puntos: 10
Respuesta: Problema con formulario

Es verdad me debía haber fijao más se me olvido el return en el formulario, y lo del 0 es que lo coji de una web y pense que funcionaba ya que era para enseñar hacer tal cosa gracias amigo un saludo todo arreglado.

Etiquetas: formulario, registro
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 23:48.