Foros del Web » Programando para Internet » Javascript »

Formulario por partes en PHP

Estas en el tema de Formulario por partes en PHP en el foro de Javascript en Foros del Web. HOla muchachos. Tengo un formulario con muchos campos y oviamente se ve muy largo. Me piden que lo haga por partes. Por ejemplo que la ...
  #1 (permalink)  
Antiguo 05/07/2014, 06:04
 
Fecha de Ingreso: septiembre-2013
Ubicación: Bogota
Mensajes: 139
Antigüedad: 10 años, 7 meses
Puntos: 0
Formulario por partes en PHP

HOla muchachos. Tengo un formulario con muchos campos y oviamente se ve muy largo. Me piden que lo haga por partes. Por ejemplo que la primera parte vayan los datos personales y un boton que diga "Siguiente paso" para que pase a la segunda parte del formulario. Bueno eso lo he hecho antes pero lo que pasa es que antes de que pase a la segunda parte debo validar que todos los campos esten llenos. alguien me podria colaborar con un enlace de referencia. Gracias
  #2 (permalink)  
Antiguo 05/07/2014, 07:21
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: Formulario por partes en PHP

mira no soy muy profecional en php para decirte exactamente que hacer lo mas que puedo es aportarte una idea...

tal ves tengas que getionarlo creando secciones:

formulario1.php
formulario2.php
formulario3.php

la idea es la siguiente:
llenas formulario1, y al dar en siguiente entras en formulario2.php, en ese momento lo primero que haces es llamar a una funcion que rectifique que todo esta bien, si falta algún dato o hay algún error redireccionas al archivo anterior... y así sucesivamente... en cada paso.
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #3 (permalink)  
Antiguo 05/07/2014, 07:24
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Formulario por partes en PHP

Podrías hacer la verificación con PHP utilizando funciones como isset, is_null o empty, de tal modo que iteras sobre el array asociativo $_POST y te podrías apoyar en una variable auxiliar cuyo valor final determine si se completaron o no todos los campos.

Código PHP:
Ver original
  1. $auxiliar = true;
  2.  
  3. foreach ($_POST as $dato)
  4.     if (!isset($dato)) $auxiliar = false;
  5.  
  6. if ($auxiliar){
  7.     $_SESSION['parte1'] = $_POST;
  8.     header ('Location: parte2.php');
  9. }
  10. else
  11.     header ('Location: ' . $_SERVER['HTTP_REFERER']);

De este modo, vas pasando la información mediante una variable de sesión y lo mismo harías con las otras partes del formulario. También podrías usar un array de sesiones, así utilizarías una sola variable de sesión para guardar toda la información y ya no una variable por parte. Otra opción es que utilices pestañas, las cuales puedes crear con CSS o JavaScript, de ese modo podrías distribuir mejor los campos de tu formulario, teniéndolos todos en la misma página. También puedes usar Ajax para no tener que recargar la ventana.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 05/07/2014 a las 07:30 Razón: Palabra mal escrita
  #4 (permalink)  
Antiguo 05/07/2014, 07:27
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: Formulario por partes en PHP

ajax seria la opción mas viable...

pero en tu caso que requieres validar los campos tambien tendrias que hacerlo en esa instancia...
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #5 (permalink)  
Antiguo 05/07/2014, 07:27
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Formulario por partes en PHP

Hola,

En la segunda parte debes validar que los de la primera parte esten llenos y eso lo puedes hacer creando una variable de SESSION al procesar la primera parte..... luego haces lo mismo para la tercera.... diciendo en esa variable de chequeo que esta OK la segunda parte:

$_SESSION['ok_form']=undefined; // no existe o vale NULL
$_SESSION['ok_form']=1; // cuando pasó con exito la primera parte (estas en la segunda)
$_SESSION['ok_form']=2; // cuando pasó con exito la segunda parte (estas en la tercera)

Logicamente ... debes tener un campo que te diga que formulario estas procesando.. podria ser la URL del formulario.. o si tienes varios formularios en una misma pagina, un segundo campo con el ID del formulario
__________________
Salu2!
  #6 (permalink)  
Antiguo 05/07/2014, 12:47
 
Fecha de Ingreso: septiembre-2013
Ubicación: Bogota
Mensajes: 139
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: Formulario por partes en PHP

Hola amigos, Resulta que tengo un formulario demasiado extenso y decidí dividirlo en varios "bloques" por así decirlo para que no se viera tan recargado. Lo dividí en 5 bloques pero el problema es que solo me esta validando(que no estén vacíos) los campos del ultimo bloque y los de mas no los valida. Esto es raro por que antes de dividir el formulario me validaba todos los campos. Voy a mostrar el código que estoy construyendo con solo dos campos ya que es muy extenso. La validación la hago con Jquery.

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US" xml:lang="en">
  3. <script src="javascript/paginacion.js" type="text/javascript"></script>
  4. <script src="validacion_jquery/jquery.js"></script>
  5. <script src="validacion_jquery/jquery.validate.js"></script>
  6. <LINK href='validacion_jquery/estilo_color.css' type=text/css rel=stylesheet>
  7. <script type="text/javascript">
  8.     $(function(){
  9.         $('#miForm3').validate({
  10.             errorClass: "my-error-class",
  11.             validClass: "my-valid-class",
  12.             rules :{
  13.                 cod_doc : {
  14.                     required :true,
  15.                 },
  16.                 numdoc_cab : {
  17.                     required : true,
  18.                     number : true   //para validar campo solo numeros
  19.                 }
  20.             }//cierra rules
  21.         });    
  22.     });
  23. </script>
  24. </head>
  25.   <FORM id="miForm3" NAME="registrar_cab_hogar" METHOD="post">
  26.     <!-- Inicio primer bloque -->
  27. <div align="left" id="divcero" style="display: block;" >  
  28. <td> * Tipo de documento:
  29.                 <select class="required" name='cod_doc'>
  30.                 <option value="">Seleccione...</option>
  31.                 <?
  32.                $sql3 = "select * from tipo_doc";
  33.                $result3 = mysql_query ($sql3, $link);
  34.                while ($row = mysql_fetch_array ($result3)) {
  35.                $mcodpr = $row['cod_doc'];
  36.                $mprog = $row['dtalle_doc'];
  37.                if ($pro == $mcodas)
  38.                echo "<option value= '$mcodpr'> $mprog </option>";
  39.                 else
  40.                 echo "<option value= '$mcodpr'> $mprog</option>";
  41.                 }
  42.                 echo "</option>";
  43.                 ?>
  44.                 </select>
  45.                 </td>
  46. </td><td>* N&uacute;mero de documento:<input class="required" type=text name="numdoc_cab" id="numdoc_cab" onKeyPress="cargando(this)" onBlur="comprobarU(this)" MAXLENGTH=20 onKeypress="if (event.keyCode < 45 || event.keyCode > 57) event.returnValue = false;"></input>
  47. <center><input type="button" name="sgte_pag1" value="Siguiente" class="button white" id="botoninicio" onClick="ocultar();"></center>
  48. </div>
  49. <!-- Fin primer bloque -->
  50.  
  51. <!-- Inicio segundo bloque -->
  52. <div align="left" id="divprimero" style="display: none;" >
  53. campos...
  54.         </div>
  55.         <!-- Fin del segundo bloque -->
  56.  
  57. <!-- Inicio del tercer bloque -->
  58. <div align="left" id="divsegundo" style="display:none;">    
  59. campos...
  60. </div>
  61. <!-- Fin del tercer bloque -->
  62.  
  63. <!-- Inicio del cuarto bloque -->
  64. <div align="left" id="divtercero" style="display:none;">
  65. campos...
  66. </div>
  67. <!-- Fin del cuarto bloque -->
  68.  
  69. <!-- Inicio del quinto bloque-->
  70. <div align="left" id="divcuarto" style="display:none;">
  71. campos...
  72.     <input type="button" value="Anterior" class="button white"onClick="atras3();">
  73.     <input type="button" value="Volver al principio" class="button white" onClick="ocultarcero();">    
  74.     <input name="enviar" type="submit" class="button white" value="Guardar formulario">
  75. </div>
  76. <!--Fin del quinto bloque-->
  77. </FORM>
  78. </body>
  79. </html>

paginacion.js

Código Javascript:
Ver original
  1. function ocultarcero(){
  2.     document.getElementById('divcero').style.display='block';
  3.     document.getElementById('divprimero').style.display='none';
  4.     document.getElementById('divtercero').style.display='none';
  5.     document.getElementById('divcuarto').style.display='none';
  6.     document.getElementById('divsegundo').style.display='none';
  7. }  
  8.     function ocultar(){
  9.     document.getElementById('divcero').style.display='none';
  10.     document.getElementById('divprimero').style.display='block';
  11.     document.getElementById('divtercero').style.display='none';
  12.     document.getElementById('divcuarto').style.display='none';
  13.     document.getElementById('divsegundo').style.display='none';
  14. }
  15. function atras1(){
  16.     document.getElementById('divcero').style.display='none';
  17.     document.getElementById('divprimero').style.display='block';
  18.     document.getElementById('divsegundo').style.display='none';
  19.     document.getElementById('divtercero').style.display='none';
  20.     document.getElementById('divcuarto').style.display='none';
  21. }
  22.  
  23. function ocultar2(){
  24.     document.getElementById('divcero').style.display='none';
  25.     document.getElementById('divprimero').style.display='none';
  26.     document.getElementById('divsegundo').style.display='block';
  27.     document.getElementById('divtercero').style.display='none';
  28.     document.getElementById('divcuarto').style.display='none';
  29.    
  30. }
  31.  
  32. function atras2(){
  33.     document.getElementById('divcero').style.display='none';
  34.     document.getElementById('divprimero').style.display='none';
  35.     document.getElementById('divsegundo').style.display='block';
  36.     document.getElementById('divtercero').style.display='none';
  37.     document.getElementById('divcuarto').style.display='none';
  38.    
  39. }
  40.  
  41. function ocultar3(){
  42.     document.getElementById('divcero').style.display='none';
  43.     document.getElementById('divprimero').style.display='none';
  44.     document.getElementById('divsegundo').style.display='none';
  45.     document.getElementById('divtercero').style.display='block';
  46.     document.getElementById('divcuarto').style.display='none';
  47.    
  48. }
  49. function atras3(){
  50.     document.getElementById('divcero').style.display='none';
  51.     document.getElementById('divprimero').style.display='none';
  52.     document.getElementById('divsegundo').style.display='none';
  53.     document.getElementById('divtercero').style.display='block';
  54.     document.getElementById('divcuarto').style.display='none';
  55. }
  56. function ocultar5(){
  57.     document.getElementById('divcero').style.display='none';
  58.     document.getElementById('divprimero').style.display='none';
  59.     document.getElementById('divsegundo').style.display='none';
  60.     document.getElementById('divtercero').style.display='none';
  61.     document.getElementById('divcuarto').style.display='block';
  62.    
  63. }

Etiquetas: formulario, partes, php
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 21:43.