Foros del Web » Programando para Internet » PHP »

Guardar datos

Estas en el tema de Guardar datos en el foro de PHP en Foros del Web. Hola, Tengo una pagina con esta estructura: 1.php: el usuario pone unas puntuaciones a unos elementos da al botón "Ver resultado" y este botón le ...
  #1 (permalink)  
Antiguo 27/12/2010, 11:29
 
Fecha de Ingreso: noviembre-2006
Mensajes: 82
Antigüedad: 17 años, 5 meses
Puntos: 0
Guardar datos

Hola,

Tengo una pagina con esta estructura:


1.php:
el usuario pone unas puntuaciones a unos elementos
da al botón "Ver resultado" y este botón le lleva a "2.php"


En 2.php hago los calculos con las puntuaciones que ha dado el usuario, y el resultado final lo guardo en un array.
Muestro el resultado final por pantalla y hay un botón "Guardar", para que el usuario pueda guardar este resultado en la base de datos si quiere.


Lo que quiero hacer es que al dar "guardar", no vaya a otra página, vaya a la misma (2.php). Para esto tengo puesto:

Código PHP:
if (!isset($_GET['accion'])){

    ... 
los cálculos .....  y el array con el resultado



else{
     ...  
guardar el resultado en la base de datos .....
}

echo 
'<form method="get" action="2.php">';                    
    echo 
"<p>";
    echo 
"<input type=\"submit\" name=\"accion\" value=\"Guardar\" />";
    echo  
"<input type=\"button\" name=\"Cancelar\" value=\"Cancelar\" onClick=\"location.href='evaluar.php'\" />";
    echo 
"</p>";
    echo 
'</FORM>'
El problema es que al dar Guardar y cargar de nuevo 2.php, pierdo el resultado total que tenía guardado en el array, y que es el que quiero guardar en la base de datos. Cómo podría hacerlo?
  #2 (permalink)  
Antiguo 27/12/2010, 11:41
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 13 años, 4 meses
Puntos: 13
Respuesta: Guardar datos

Podes hacer varias cosas, una mandar todos esos datos por get en el link de guardar, para esto podes serializar el arreglo (serialize) y luego codificarlo (urlencode) para luego hacer el proceso inverso, sino podes armar una cadena de la forma &arreglo[]=valor&arreglo[]=valor2.... sino podes mandarlo por POST haciendo un formulario con una lista de campos hidden de nombre arreglo[] que genera un arreglo en el envio.
Esas son las formas que se me ocurren por ahora, pero hay muchas, como puede ser usar sessiones, guardar en la BD y luego hacer un "aprobacion" y luego borrar esos datos, etc
  #3 (permalink)  
Antiguo 27/12/2010, 11:56
 
Fecha de Ingreso: noviembre-2006
Mensajes: 82
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Guardar datos

Hmm creo que lo haré pasandolo con campos hidden en un formulario, pero no sé si será muy laborioso porque en este momento tengo solo 1 array con un resultado, pero a medida que use la aplicación tendré unos 10 arrays cuyos valores necesitaré guardar.

Para pasarlos como hidden, es correcto esto?
Código PHP:
echo "<input type=\"hidden\" name=\"nombre_array\" value=\"$array1\" />"
y luego para obtenerlo tras dar "Guardar"
$obtener_array=$_GET['nombre_array']; ?
  #4 (permalink)  
Antiguo 27/12/2010, 12:06
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 13 años, 4 meses
Puntos: 13
Respuesta: Guardar datos

Para hacerlo así supongo que vas a tener que serializar el arreglo con la funcion serialize y luego deserealizarlo con deserialize.
Sino podes hacer algo asi:
Código PHP:
foreach($array1 as $elemento) {
   echo 
"<input type=\"hidden\" name=\"nombre_array[]\" value=\"$elemento\" />";

Luego si con:
Código PHP:
$obtener_array=$_GET['nombre_array']; 
Como vas a tener varios arerglos que tal así:
Código PHP:
//Hacemos un arreglo con todos los arreglos:
$arreglos[] = $arreglo1;
$arreglos[] = $arreglo2;
//Serializamos
$cadena serialize($arreglos);
//Codificamos para enviarlo por GET, no estoy seguro que haga falta
$cadena urlencode($arreglo);
//lo usamos en link como si fuera una variable comun
echo <a href="2.php?action=guardar&data=$cadena>Guardar</a>"
Luego obtenemos la información así:
Código PHP:
$arreglos deserialize(urldecode($_GET['data']));
//Ahora en $arreglos tenemos la informacion como antes. 
  #5 (permalink)  
Antiguo 27/12/2010, 12:35
 
Fecha de Ingreso: noviembre-2006
Mensajes: 82
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Guardar datos

Muchas gracias. Voy a probar
  #6 (permalink)  
Antiguo 27/12/2010, 17:35
 
Fecha de Ingreso: noviembre-2006
Mensajes: 82
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Guardar datos

Tengo varios problemas.

El primero es dónde poner cada cosa.
Mi estructura es:

Código PHP:
if (!isset($_GET['accion'])){ 

    ... 
c&#225;lculos y arrays con resultados...


}  
else{ 
     ...  
guardar resultados en la base de datos ..... 


echo 
'<form method="get" action="2.php">';                     
    echo 
"<p>"
    echo 
"<input type=\"submit\" name=\"accion\" value=\"Guardar\" />"
    echo  
"<input type=\"button\" name=\"Cancelar\" value=\"Cancelar\" onClick=\"location.href='evaluar.php'\" />"
    echo 
"</p>"
    echo 
'</FORM>'
La parte donde creo el arreglo con los arreglos la he puesto dentro del if, y la parte donde hago "unserialize" la he puesto en el else. No sé si estará bien. Y no sé dónde poner el link para que funcione al dar al botón

Y el segundo es que probandolo aparte, me da este error:
Warning: urlencode() expects parameter 1 to be string, array given
  #7 (permalink)  
Antiguo 28/12/2010, 09:02
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 13 años, 4 meses
Puntos: 13
Respuesta: Guardar datos

Lo del error que te marca es porque cuando escribi el código ni me fije que aca:
Código PHP:
$cadena urlencode($arreglo); 
no es arreglo sino cadena, quedando:
Código PHP:
$cadena urlencode($cadena); 
Pero vamos de a poco, al final tenes que poner esto:
Código PHP:
//Hacemos un arreglo con todos los arreglos:
$arreglos[] = $arreglo1;
$arreglos[] = $arreglo2;
//Serializamos
$cadena serialize($arreglos);
//Codificamos para enviarlo por GET, no estoy seguro que haga falta
$cadena urlencode($cadena);
//lo usamos en link como si fuera una variable comun
echo <a href="2.php?action=guardar&data=$cadena>Guardar</a>"
Solo que la última linea quedaría:
Código PHP:
echo '<form method="get" action="2.php">';                     
    echo 
"<p>"
    echo 
"<input type=\"submit\" name=\"accion\" value=\"Guardar\" onClick=\"location.href='2.php?action=guardar&data=$cadena'\" />"
    echo  
"<input type=\"button\" name=\"Cancelar\" value=\"Cancelar\" onClick=\"location.href='evaluar.php'\" />"
    echo 
"</p>"
    echo 
'</FORM>'
Y en el else tenes que poner si:
Código PHP:
$arreglos deserialize(urldecode($_GET['data'])); 
Y con eso tendrias en $arreglos toda la información.

Etiquetas: Ninguno
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 22:03.