Foros del Web » Programando para Internet » PHP »

Contar de manera acumulativa los campos rellenados en cada envio del formulario

Estas en el tema de Contar de manera acumulativa los campos rellenados en cada envio del formulario en el foro de PHP en Foros del Web. Hola amigas/os, a ver si me pudieran ayudar con esto que me lleva de cabeza, les explico. Tengo un formulario con 3 campos inputs que ...
  #1 (permalink)  
Antiguo 28/03/2017, 02:11
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 12 años
Puntos: 5
Contar de manera acumulativa los campos rellenados en cada envio del formulario

Hola amigas/os, a ver si me pudieran ayudar con esto que me lleva de cabeza, les explico.

Tengo un formulario con 3 campos inputs que cuando le doy al botón enviar. Existe un contador

que me indica las veces que ha sido enviado dicho formulario. Y esto lo hace bien.

El problema es que me debe contar, de manera acumulativa, los campos rellenados en cada vez que se envia el formulario.

Es decir:

Rellenamos el formulario la primera vez:

Antes de enviar el formulario relleno uno de los 3 campos y le doy al boton enviar.

Con lo cual el formulario, el contador cuenta que ha sido enviado el formulario 1 vez y

que se ha rellenado 1 campo input.



Rellenamos el formulario una segunda vez:

Volvemos a rellenar un campo input y le damos otra vez al boton enviar.

Con lo cual el formulario, el contador cuenta que ha sido enviado 2 veces y

que se han rellenado 2 campos input (el de la vez pasada y el de ahora, osea de manera acumulativa).

Y esto de hacerlo de manera acumulativa es lo que no me funciona.


Y así tantas veces como rellenemos y enviemos el formulario

El pongo el codigo que he hecho hasta ahora:

Código PHP:
Ver original
  1.  
  2.  
  3.         //CONTADOR DE ENVIOS DEL FORMULARIO
  4.        
  5.         $contador = (isset($_POST["contador"])) ? $_POST["contador"] +1 : 0;  
  6.  
  7.  
  8.  
  9.         //CONTADOR DE CAMPOS LLENOS
  10.        
  11.             $array = array();
  12.  
  13.                 for($i=1; $i<=3; $i++)
  14.                
  15.                     {
  16.                         if($_POST['campo_' . $i] != '')
  17.                        
  18.                             {
  19.                                 array_push($array, $_POST['campo_' . $i]);
  20.                                
  21.                                 $_SESSION['contador'] = $array;
  22.                             }  
  23.                     }
  24.  
  25.             echo count($_SESSION['contador']++). "<br/>";
  26.  
  27.  
  28.  
  29.             //COMPROBACION "CONTADOR DE ENVIOS" Y "CAMPOS LLENOS"          
  30.             if($contador == count($_SESSION['contador']++))
  31.            
  32.                 {
  33.                     echo "Van sincronizados<br/>";
  34.                 }
  35.                
  36.                 else
  37.                
  38.                 {
  39.                     echo "No van sincronizados<br/>";                  
  40.                 }
  41.  
  42.  
  43.  
  44.                 //FORMULARIO
  45.             echo "<form action='' method='post' name=''>";
  46.        
  47.  
  48.  
  49.                 for($i=1; $i<=3; $i++)
  50.                
  51.                     {  
  52.                         echo "nombre " . $i . " <input type='text' name='campo_" . $i . "'></br></br>";            
  53.                     }
  54.                    
  55.                    
  56.                    
  57.                 echo "Contador de envios: " . $contador . "<br/>".
  58.  
  59.                     "<input type='hidden' name='contador' value='" . $contador . "' /><br>
  60.                    
  61.    
  62.                     <input type='submit' value='enviar'>";
  63.                    
  64.  
  65.  
  66.             echo "</form>";

Si pudieran ayudarme les estaria muy agradecido por ello.

Gracias.
  #2 (permalink)  
Antiguo 28/03/2017, 03:40
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 12 años
Puntos: 5
Respuesta: Contar de manera acumulativa los campos rellenados en cada envio del formu

Actualizacion de mi mismo.

Creo que me voy acercando pero no esta del todo pulido:

Ya que no se como poner solo un $_SESSION['contador']

Código PHP:
Ver original
  1. //CONTADOR DE ENVIOS DEL FORMULARIO
  2.        
  3.         $contador = (isset($_POST["contador"])) ? $_POST["contador"] +1 : 0;  
  4.      
  5.        
  6.        
  7.         //CONTADOR DE CAMPOS LLENOS
  8.  
  9.                 for($i=1; $i<=3; $i++)
  10.                
  11.                     {
  12.                         if($_POST['campo_' . $i] != '')
  13.                        
  14.                             {
  15.                                 echo $_SESSION['contador'];
  16.                             }  
  17.                     }
  18.  
  19.  
  20.  
  21.             //COMPROBACION "CONTADOR DE ENVIOS" Y "CAMPOS LLENOS"          
  22.             if($contador == $_SESSION['contador']++)
  23.            
  24.                 {
  25.                     echo "Van sincronizados<br/>";
  26.                 }
  27.                
  28.                 else
  29.                
  30.                 {
  31.                     echo "No van sincronizados<br/>";                  
  32.                 }  
  33.                                    
  34.         ?>  
  35.        
  36.  
  37.          
  38.         <?php
  39.            
  40.             echo "<form action='' method='post' name=''>";
  41.        
  42.  
  43.  
  44.                 for($i=1; $i<=3; $i++)
  45.                
  46.                     {  
  47.                         if(!empty ($_POST['campo_' . $i])) {$dato = $_POST['campo_' . $i];} else { $dato = '';}
  48.                        
  49.                         echo "nombre " . $i . " <input type='text' name='campo_" . $i . "' value='". $dato."'></br></br>";             
  50.                     }
  51.                    
  52.                    
  53.                    
  54.                 echo "Contador de envios: " . $contador . "<br/>".
  55.  
  56.                     "<input type='hidden' name='contador' value='" . $contador . "' /><br>
  57.                    
  58.    
  59.                     <input type='submit' value='enviar'>";
  60.                    
  61.  
  62.  
  63.             echo "</form>";
  #3 (permalink)  
Antiguo 28/03/2017, 03:49
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Contar de manera acumulativa los campos rellenados en cada envio del formu

Si ese contador es común a todos los usuarios debes de almacenarlo en la base de datos o en algún archivo.
Si lo haces con sesiones, sólo será válido para esa sesión y se perderá cuando la sesión sea destruida
__________________
Unset($vida['malRollo']);
  #4 (permalink)  
Antiguo 28/03/2017, 03:54
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 12 años
Puntos: 5
Respuesta: Contar de manera acumulativa los campos rellenados en cada envio del formu

Claro, debe ser asi. EL codigo forma parte de un juego que estoy haciendo , asi

que una vez terminada la partida los datos se borran.

Como digo debe no almacenarse con bbdd.
  #5 (permalink)  
Antiguo 28/03/2017, 13:35
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Contar de manera acumulativa los campos rellenados en cada envio del formu

No me quedo claro eso del juego y si es para más usuarios, si es para uno solo se me ocurre un input hidden, jajaja nada ortdoxo:

Código PHP:
Ver original
  1. <?php
  2. $acumulado = 0;
  3. if(isset($_POST["send"])){
  4. $acumulado = intval($_POST["acumular"]);
  5. }
  6.  
  7. ?>
  8.  
  9. <form method="post" action="">
  10. <input type="hidden" name="acumular" value="<?php echo $acumulado+1; ?>" /><input type="submit" name="send" value="Acumular!!" />
  11. </form><br/>
  12. Se ha acomulado: <?php echo $acumulado; ?>

El único problema acá es que si cierras la ventana y/o pestaña adiós datos y además el usuario puede cambiar el valor del input...

Si necesitas asegurarte ante todo eso, la recomendación sería sesiones sería más o menos la misma idea...

Código PHP:
Ver original
  1. <?php
  2. if($_SESSION["acumulado"] == ""){ $_SESSION["acumulado"] = 0; }
  3.     if(isset($_POST["send"])){
  4.     $_SESSION["acumulado"] += 1;
  5.     }
  6. ?>
  7.  
  8. <form method="post" action="">
  9. <input type="submit" name="send" value="acumular" />
  10. </form><br/>
  11. Acumulado: <?php echo $_SESSION["acumulado"]; ?>

Ahora si es para dos o más jugadores necesitas almacenar esa info en algún lugar, sea bd, archivo, u otro tipo de almacenamiento, pero no deseas eso, lo que puedes hacer es usar sockets...


Etiquetas: cada, campos, formulario, manera
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 15:59.