Ver Mensaje Individual
  #13 (permalink)  
Antiguo 01/08/2012, 19:42
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años, 9 meses
Puntos: 320
Respuesta: Paginar formulario con php

Cita:
En la pagina 1 envías a la pagina 2, por post y en la página 2 envías a la pagina 3 por post el formulario de la página 2 + los hidden de la página 1 y así sucesivamente y en la última haces la inserción en la bd, arrastrando todo..
y cuando quieres volver hacia atras como harias? mas campos hidden?
osea ejemplo:
Pagina 1 Datos Personales:
Nombre, Apellido, Telefono, Direccion, Usuario, Conraseña, Edad, Acepta terminos
Pagina 2 Intereses:
37 categorias posibles tipo checkbox, radio, select, etc.
Pagina 3 Productos
54 Productos seleccionables.
Pagina 4 Confirmacion de datos
Nombre, Apellido, Telefono, Direccion, Usuario, Conraseña, Edad, Acepta terminos
37 categorias
54 Productos


.........

en mi ejemplo tendrias que trabajar con 99 (si no conte mal) campos hidden eso son 99 variables que se prosesan cada vez si quieres que valla y vuelva, la forma mas practica para manejarlo es con seciones.

Cita:
la funcion malevola XD
eso esta bien interesante XD
sin embargo me antoje de combinar mi ejemplo con campos hidden y la funcion malevola con lo cual queda bastante optimizado y facil de usar XD
Código PHP:
Ver original
  1. <?php
  2. echo('<html><head><title>Trabajo con Seciones</title></head><body>');
  3. if(isset($_GET[Prosesar]) && $_POST[Pagina]=='0'){
  4. //Aca prosesas todos los datos de los foirmularios
  5. echo<<<HTML
  6. <hr />
  7. Los datos son: Nombre: $_POST[Nombre], Apellido:$_POST[Apellido], Telefono:$_POST[Telefono]
  8. <hr />
  9. <a href="Pasos.php">Probar de nuevo?</a>
  10. HTML;
  11. } else {
  12.     if(isset($_GET[Paso])){
  13.         $_SESSION[Paso]=$_POST[Pagina];
  14.     } else {
  15.         session_destroy();
  16.         session_start();
  17.         $_SESSION[Paso]=1;
  18.     }
  19.    
  20.     switch ($_GET[Paso]){
  21.         //Segun el paso guardas los datos correspondientes a ese formulario
  22.         case '1':   $_SESSION[Nombre]=$_POST[Nombre];       break;
  23.         case '2':   $_SESSION[Apellido]=$_POST[Apellido];   break;
  24.         case '3':   $_SESSION[Telefono]=$_POST[Telefono];   break;     
  25.     }
  26.  
  27.     switch ($_SESSION[Paso]){
  28.     //Muestras el formulario correspondiaente paar cada paso
  29. //-------------------------------->>>
  30.         case'1':
  31. echo <<<HTML
  32.     <input type="button" onClick="Pagina.value='2';document.Formulario.submit();" value="Paso 2" />
  33.     <hr />
  34.     <form action="Pasos.php?Paso=1&Almacenar=true" method="post" name="Formulario" id="Formulario">
  35.         Nombre:<input type="text" size="20" value="$_SESSION[Nombre]" name="Nombre" id="Nombre"/>
  36.         <input type="hidden" name="Pagina" id="Pagina">
  37.     </form>
  38. HTML;
  39. break;
  40. //-------------------------------->>>
  41.         case'2':
  42. echo <<<HTML
  43.     <input type="button" onClick="Pagina.value='1';document.Formulario.submit();" value="Paso 1" />
  44.     <input type="button" onClick="Pagina.value='3';document.Formulario.submit();" value="Paso 3" />
  45.     <hr />
  46.     <form action="Pasos.php?Paso=2&Almacenar=true" method="post" name="Formulario" id="Formulario">
  47.         Apellido:<input type="text" size="20" value="$_SESSION[Apellido]" name="Apellido" id="Apellido"/>
  48.         <input type="hidden" name="Pagina" id="Pagina">
  49.     </form>
  50. HTML;
  51.         break;
  52. //-------------------------------->>>
  53.         case'3':
  54. echo <<<HTML
  55.     <input type="button" onClick="Pagina.value='2';document.Formulario.submit();" value="Paso 2" />
  56.     <input type="button" onClick="Pagina.value='4';document.Formulario.submit();" value="Paso 4" />
  57.     <hr />
  58.     <form action="Pasos.php?Paso=3&Almacenar=true" method="post" name="Formulario" id="Formulario">
  59.         Telefono:<input type="text" size="20" value="$_SESSION[Telefono]" name="Telefono" id="Telefono"/>
  60.         <input type="hidden" name="Pagina" id="Pagina">
  61.     </form>
  62. HTML;
  63.         break;
  64. //-------------------------------->>>
  65.         case'4':
  66. echo <<<HTML
  67.     <input type="button" onClick="Pagina.value='3';document.Formulario.submit();" value="Paso 3" />
  68.     <input type="button" onClick="Pagina.value='0';document.Formulario.submit();" value="Guardar" />
  69.     <hr />
  70.     <form action="Pasos.php?Paso=4&Prosesar=true" method="post" name="Formulario" id="Formulario">
  71.         Nombre:<input type="text" size="20" value="$_SESSION[Nombre]" name="Nombre" id="Nombre"/><br />
  72.         Apellido:<input type="text" size="20" value="$_SESSION[Apellido]" name="Apellido" id="Apellido"/><br />
  73.         Telefono:<input type="text" size="20" value="$_SESSION[Telefono]" name="Telefono" id="Telefono"/><br />
  74.         <input type="hidden" name="Pagina" id="Pagina">
  75.     </form>
  76. HTML;
  77.             break;
  78. //-------------------------------->>>
  79. }   }
  80. echo('</body></html>');
  81. ?>

no es por desmerecer el esfuerzo pero podrias hojear esto:

http://www.jankoatwarpspeed.com/exam...orm_to_wizard/

sin duda es la forma mas eficientes de trabajar con pasos.
(debes hacer click en el boton rojo para ver su funcionamiento)
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios

Última edición por NSD; 01/08/2012 a las 19:48