Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Almacenar variables en array desde formulario

Estas en el tema de Almacenar variables en array desde formulario en el foro de PHP en Foros del Web. Hola a todos, soy nuevo en el foro y aunque he buscado, he encontrado algunos temas similares a lo que necesito pero no se ajusta ...
  #1 (permalink)  
Antiguo 29/11/2013, 09:29
 
Fecha de Ingreso: noviembre-2013
Mensajes: 6
Antigüedad: 10 años, 4 meses
Puntos: 0
Almacenar variables en array desde formulario

Hola a todos, soy nuevo en el foro y aunque he buscado, he encontrado algunos temas similares a lo que necesito pero no se ajusta del todo.

El problema es que necesito guardar en un array el nombre de un producto y la referencia de este desde un formulario html. Ambos campos son de tipo texto. Estos se procesaran en la misma página y se mostrarán en una tabla, es decir, cada vez que se pulse el botón enviar (submit) los datos se agregan al array y se van mostrando en una fila.

Lo que no consigo realizar es ir guardando los datos en el array, sólo consigo guardar uno y cuando vuelvo a enviar se borra y coloca el nuevo.

¿Alguna sugerencia?

Gracias de antemano.
  #2 (permalink)  
Antiguo 29/11/2013, 09:57
Avatar de danny_  
Fecha de Ingreso: septiembre-2012
Mensajes: 95
Antigüedad: 11 años, 7 meses
Puntos: 4
Respuesta: Almacenar variables en array desde formulario

Usa el método array_push(), este, como indica su nombre empuja nuevos elementos del array y los va almacenando, lo que esta claro es que en cuanto cierres el navegador dicha información que quieres guardar en el array se irá fácilmente al carajo.

http://us3.php.net/manual/es/function.array-push.php


Código PHP:
Ver original
  1. <?php
  2. $stack = array("naranja", "plátano");
  3. array_push($stack, "manzana", "arándano");
  4. print_r($stack);
  5. ?>
__________________
http://www.danielcarvajal.es
  #3 (permalink)  
Antiguo 29/11/2013, 10:03
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: Almacenar variables en array desde formulario

creo que eso te pasa porque lo que estás haciendo es utilizar un array indexado que lo que hace es sobreescribir la clave 0. prueba a utilizar un array asociativo, es decir, con clave string establecida por ti y ya no tendrás más problemas.
__________________
Ayúdame a hacerlo por mi mismo.
  #4 (permalink)  
Antiguo 29/11/2013, 10:14
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Almacenar variables en array desde formulario

<saludos>
Ehm... y que pasa entre el primer envío y el segundo?
Si bien se guarda en el array la primera vez, al volver al formulario
para agregar otro donde queda ese dato????
Si la respuesta es en el array, error!!! el array de nuevo queda limpio
pues el no tiene la potestad de retener en memoria el asunto,
y se va a renovar cada vez que se haga un envío desde el formulario.
Para eso hay varias formas de solucionarlo.
Imagino que como no has hablado de base de datos, esta todo
por código, en cuyo caso lo que necesitas es un campo hidden
que vaya almacenando todo lo que finalmente tenga el array,
y al final si que procese todo el contenido del mismo, por ende,
cada vez que se envíe y se redireccione, la data tiene que viajar
nuevamente al formulario alimentando el campo hidden

Así que revisa el tema, y nos cuentas, suerte con eso!
</saludos>
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #5 (permalink)  
Antiguo 29/11/2013, 14:52
 
Fecha de Ingreso: noviembre-2013
Mensajes: 6
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: Almacenar variables en array desde formulario

Muchas gracias a todos por la ayuda. En efecto mortiprogramador a dado en el clavo de lleno. Como comentas he de hacerlo con un campo hidden (no sé si se puede hacer de otra forma), pero no entiendo la lógica, es simplemente un ejercicio por ello no uso base de datos. Estoy totalmente perdido. El código que comenta danny_ ya lo había consultado.

¿Algún ejemplo sería posible?

Se nota que no conocéis PHP desde hace dos días. Yo, empezando.

Un saludo y gracias otra vez.
  #6 (permalink)  
Antiguo 29/11/2013, 15:05
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: Almacenar variables en array desde formulario

es mejor una variable de session que un campo hidden, si pones tu código es mas fácil ayudarte
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #7 (permalink)  
Antiguo 29/11/2013, 20:33
Avatar de danny_  
Fecha de Ingreso: septiembre-2012
Mensajes: 95
Antigüedad: 11 años, 7 meses
Puntos: 4
Respuesta: Almacenar variables en array desde formulario

Tiene razón mortiprogramador, perdón por mi respuesta ya que siempre al almacenar datos enviados desde un formulario los he hecho en una bd con mysql y no por medio de arrays. El método array_push(), sólo te será de utilidad en iteraciones de algún bucle, en el momento que refresques la página, el array se pone a 0 nuevamente.

De los errores muchas veces se aprende 3 veces mas que al ir directamente a por una solución rápida y fácil, espero al menos haberte aportado algo.


Saludos!!!
__________________
http://www.danielcarvajal.es
  #8 (permalink)  
Antiguo 30/11/2013, 11:57
 
Fecha de Ingreso: noviembre-2013
Mensajes: 6
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: Almacenar variables en array desde formulario

No había puesto el código porque lo he cambiado muchas veces tratando de probar cosas distintas. Pero bueno esto es lo último que he intentado.

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<center>
<?php
if (isset($_POST['producto']) && isset($_POST['referencia'])) {
$miarray = array("Producto" => $_POST['producto'], "Referencia" => $_POST['referencia']);
}
foreach ($miarray as $clave => $valor) {
echo $clave . " " . $valor['producto'];
}
?>
<form name="formulario" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Producto:<input type="text" name="producto"/>
Referencia:<input type="text" name="referencia"/><br/>
<input type="submit" value="Insertar"/>
</form>
</center>
</body>
</html>
  #9 (permalink)  
Antiguo 30/11/2013, 19:37
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: Almacenar variables en array desde formulario

Prueba esto
Código PHP:
Ver original
  1. <?php
  2. ?>
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  7. <title></title>
  8. </head>
  9. <body>
  10. <center>
  11. <?php
  12. if(isset($_POST['producto']) && isset($_POST['referencia'])) {
  13. $_SESSION['array'][]['producto']=$_POST['producto'];
  14. $_SESSION['array'][]['referencia']=$_POST['referencia];
  15. }
  16. foreach($_SESSION['array'] as $array) {
  17. foreach($array as $clave=>$valor){
  18. echo $clave . " " . $valor['producto'];
  19. }
  20. }
  21.  
  22. ?>
  23. <form name="formulario" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  24. Producto:<input type="text" name="producto"/>
  25. Referencia:<input type="text" name="referencia"/><br/>
  26. <input type="submit" value="Insertar"/>
  27. </form>
  28. </center>
  29. </body>
  30. </html>
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #10 (permalink)  
Antiguo 01/12/2013, 03:05
 
Fecha de Ingreso: noviembre-2013
Mensajes: 6
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: Almacenar variables en array desde formulario

Muchas gracias xSkArx, voy a probarlo, aunque me gustaría poder hacerlo como indicaba mortiprogramador, pero bueno a ver si así, voy encontrando la lógica de como hacerlo y cual es el funcionamiento interno.

Saludos.
  #11 (permalink)  
Antiguo 04/12/2013, 14:41
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Almacenar variables en array desde formulario

<saludos>
En cuanto al código que nos facilita xSkArx , hay algunas cosas a revisar.
1. En la línea 15 falta cerrar las comillas de $_POST['referencia']
2. En la línea 17 se hace el foreach, pero no se revisa si tiene o no valor,
en cuyo caso dará un warning de argumento inválido (dependiendo de la configuración del servidor, puede que en algunos no se vea el warning)
Solución? Validar con un if puede ser, si la variable a recorrer en efecto tiene o no valor
3. Me pasó algo bastante curioso, pero creo que es más por copiarlo desde la página, y es que al copiarlo
en el editor, queda un espacio para todas las líneas un poco a la derecha (como si estuviese identado por la numeración en el post)
y por esto al ejecutarlo da otro warning por el session start, solución? Borrar el espacio (en mi caso solo lo hice en la primera línea)

Antes
Código PHP:
Ver original
  1. . <?php
Después
Código PHP:
Ver original
  1. <?php

Luego de esto, el código funciona perfecto y creo que es incluso mejor solución que la que yo planteaba, pues de hacerlo con los hidden, implicaría un poco más de código

Revisa y nos cuentas
</saludos>
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com

Última edición por mortiprogramador; 04/12/2013 a las 14:48
  #12 (permalink)  
Antiguo 04/12/2013, 15:25
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: Almacenar variables en array desde formulario

Cita:
Iniciado por mortiprogramador Ver Mensaje
<saludos>
En cuanto al código que nos facilita xSkArx , hay algunas cosas a revisar.
1. En la línea 15 falta cerrar las comillas de $_POST['referencia']
2. En la línea 17 se hace el foreach, pero no se revisa si tiene o no valor,
en cuyo caso dará un warning de argumento inválido (dependiendo de la configuración del servidor, puede que en algunos no se vea el warning)
Solución? Validar con un if puede ser, si la variable a recorrer en efecto tiene o no valor
3. Me pasó algo bastante curioso, pero creo que es más por copiarlo desde la página, y es que al copiarlo
en el editor, queda un espacio para todas las líneas un poco a la derecha (como si estuviese identado por la numeración en el post)
y por esto al ejecutarlo da otro warning por el session start, solución? Borrar el espacio (en mi caso solo lo hice en la primera línea)

Antes
Código PHP:
Ver original
  1. . <?php
Después
Código PHP:
Ver original
  1. <?php

Luego de esto, el código funciona perfecto y creo que es incluso mejor solución que la que yo planteaba, pues de hacerlo con los hidden, implicaría un poco más de código

Revisa y nos cuentas
</saludos>
Gracias, lo de los espacios, al poner el codigo desde el movil queda asi :P
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #13 (permalink)  
Antiguo 06/12/2013, 00:03
 
Fecha de Ingreso: noviembre-2013
Mensajes: 6
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: Almacenar variables en array desde formulario

Voy a seguir intentándolo. Lo haré de las dos formas, aunque por cuestiones didácticas me interesa más hacerlo con campos ocultos y arrays, creo que esto de hacerlo con campos hidden según he leído no es recomendable, pero como digo es por aprender, una vez que vea mas a fondo bases de datos esto ya no será necesario.

Saludos.
  #14 (permalink)  
Antiguo 18/12/2013, 11:12
 
Fecha de Ingreso: noviembre-2013
Mensajes: 6
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: Almacenar variables en array desde formulario

Hola de nuevo. Después de mucho romperme la cabeza, lo conseguí, decidí seguir las indicaciones de xSkArx.

Muchas gracias a todos por la ayuda.

Etiquetas: almacenar, formulario, html, tabla, variables
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 06:22.