Foros del Web » Programando para Internet » PHP »

Variables de sesion para mantener datos en un formulario

Estas en el tema de Variables de sesion para mantener datos en un formulario en el foro de PHP en Foros del Web. Buenas, queria consultar lo siguiente: Tengo un formulario hecho con html y php, y necesito que luego de validar del lado del servidor (conexion a ...
  #1 (permalink)  
Antiguo 26/03/2013, 18:50
 
Fecha de Ingreso: abril-2007
Mensajes: 24
Antigüedad: 16 años, 11 meses
Puntos: 0
Variables de sesion para mantener datos en un formulario

Buenas, queria consultar lo siguiente:

Tengo un formulario hecho con html y php, y necesito que luego de validar del lado del servidor (conexion a BD) , cuando esta validación retorne error , vuelva al formulario y los datos cargados anteriormente persistan.

Lo pude lograr con variables de sesion, pero el problema se me presenta a la hora de liberar la variable de sesion con unset, ya que al volver de la validacion directamente no me toma la variable de sesion.

Si comento la linea unset($_SESSION['nombre']); el codigo que pego abajo funciona perfecto , con la excepcion de que si sigo navengado por el sistema y vuelvo a entrar al formulario, éste sigue relleno (lo cual es logico por que no libere previamente la variable de sesion) , aclaro tambien que no uso sesion_destroy por que tengo otras variables que utilizo para otros fines que no quiero perder, es por eso que me interesa liberar esas variables particulares de los campos, a alguno se le ocurre cual puede ser el problema? el codigo es el siguiente:


form.php:

// si la variable de sesion esta seteada la guardo en otra variable (para luego mostrarla en el formulario)

if(isset($_SESSION['nombre'])) {
$nombre = $_SESSION['nombre'];
unset($_SESSION['nombre']); // destruyo la variable para que al volver a ingresar al formulario no me muestre el formulario relleno.

}

// codigo del formulario


<td colspan="3"><input name="nombre" id="nombre" value="<?php if (isset($nombre)){ echo $nombre; } ?>" /></td>

validacion.php

if (isset($_REQUEST['nombre'])) {
$nombre = $_REQUEST['nombre']; $_SESSION['nombre']=$nombre;}



Muchas gracias
  #2 (permalink)  
Antiguo 26/03/2013, 19:19
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 5 meses
Puntos: 175
Respuesta: Variables de sesion para mantener datos en un formulario

No hacen falta sesiones.. haz algo como esto en los campos que necesites

Código PHP:
<input type="text" name="name" id="name" class="campos" value="<?= (isset($_POST['name']))?$_POST['name']:""?>" />
cada vez que se refresque la pagina, seguirá conteniendo el mismo dato.
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #3 (permalink)  
Antiguo 26/03/2013, 21:33
Avatar de oscard41  
Fecha de Ingreso: mayo-2012
Ubicación: Caracas
Mensajes: 288
Antigüedad: 11 años, 10 meses
Puntos: 8
Respuesta: Variables de sesion para mantener datos en un formulario

argjuan85 yo te recomiendo que para eso hagas las validaciones desde el cliente con javascript y mandes los datos con ajax, asi si retorna algun error del servidor los datos van a permanecer y sin necesidad de que cargues tu pagina y si no retorna ningun error creas tu $_SESSION['usuario'] y te evitas el error que tienes ahorita...
  #4 (permalink)  
Antiguo 27/03/2013, 08:42
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 15 años, 11 meses
Puntos: 47
Respuesta: Variables de sesion para mantener datos en un formulario

Cita:
Iniciado por loncho_rojas Ver Mensaje
No hacen falta sesiones.. haz algo como esto en los campos que necesites

Código PHP:
<input type="text" name="name" id="name" class="campos" value="<?= (isset($_POST['name']))?$_POST['name']:""?>" />
cada vez que se refresque la pagina, seguirá conteniendo el mismo dato.
Mira la solución que plantea loncho es la mas profesional que podes aplicar de lado de servidor claro que tambien podes hacerlo con javascript
  #5 (permalink)  
Antiguo 27/03/2013, 09:26
 
Fecha de Ingreso: septiembre-2012
Ubicación: Argentina
Mensajes: 144
Antigüedad: 11 años, 6 meses
Puntos: 12
Respuesta: Variables de sesion para mantener datos en un formulario

Buenas

Lo ideal es hacer toda las validaciones desde Js....Para que las variables persistan podes utilizar una funcion de js history.back() que hace la misma funcion que el "volver atras" del navegador! :)

te paso un tutorial pero hay muchos de estos buscando por google

http://www.desarrolloweb.com/articulos/1767.php
  #6 (permalink)  
Antiguo 27/03/2013, 09:45
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 5 meses
Puntos: 175
Respuesta: Variables de sesion para mantener datos en un formulario

y que pasaría si tenes un CAPTCHA tipo RECAPTCHA??? tenes que enviar el valor si o si por el POST
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #7 (permalink)  
Antiguo 27/03/2013, 11:35
 
Fecha de Ingreso: abril-2007
Mensajes: 24
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: Variables de sesion para mantener datos en un formulario

Gracias a todos por las respuestas, utilizo ajax para validar lo campos obligatorios, formatos de mail, y minimo de caracteres exigidos, el tema es que tengo que validar del lado del servidor algunos aspectos mas complejos ( estoy al tanto de que se puede hacer con ajax pero no he buscado un tutorial o algo como para realizarlo) , entonces cuando el formulario esta completo recien envio, pero luego de la validacion en el servidor si hay error tiene que volver, voy a probar con la solucion de loncho, usando POST , habria problemas si salgo del formulario ( a otra parte del sistema) y regreso? mantendria los ultimos datos? o estara en blanco?
  #8 (permalink)  
Antiguo 27/03/2013, 11:39
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 15 años, 11 meses
Puntos: 47
Respuesta: Variables de sesion para mantener datos en un formulario

mira es que el usar post no te resolvera nada, el se refiere a que cuando envies los datos lo hagas al mismo script, esto te permitira que cuando construyas el html del formulario puedas evaluar si los has enviado y de ser asi puedas asignarlos a los values...
  #9 (permalink)  
Antiguo 27/03/2013, 15:21
 
Fecha de Ingreso: abril-2007
Mensajes: 24
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: Variables de sesion para mantener datos en un formulario

perfecto, y en ese caso si al validar una vez que se envio el formulario y hubo error, ahi seteo otra variable para volver al formulario con los datos tomados del post verdad? el tema es si salgo de la pagina dle formulario y entro mas tarde, no tendria el problema que tengo con las variables de sesion al no liberarlas verdad? ( por ahi es medio tonta la pregunta, pero soy novato en el tema ) muchas gracias.
  #10 (permalink)  
Antiguo 28/03/2013, 21:13
Avatar de oscard41  
Fecha de Ingreso: mayo-2012
Ubicación: Caracas
Mensajes: 288
Antigüedad: 11 años, 10 meses
Puntos: 8
Respuesta: Variables de sesion para mantener datos en un formulario

Puedes hacer las validaciones del lado del cliente con javascript y mandarlos por post para que no uses ajax...
  #11 (permalink)  
Antiguo 03/04/2013, 15:34
 
Fecha de Ingreso: abril-2007
Mensajes: 24
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: Variables de sesion para mantener datos en un formulario

muchas gracias! ahora voy a probar las diferentes opciones.
  #12 (permalink)  
Antiguo 03/04/2013, 15:46
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 15 años, 11 meses
Puntos: 47
Respuesta: Variables de sesion para mantener datos en un formulario

Te dejo este ejemplo para que tenga una mejor idea a que me refiero...

Código PHP:
Ver original
  1. <?php
  2. if(isset($_POST["enviar"])){
  3.     $nombre = $_POST['nombre'];
  4.     $mail = $_POST['mail'];
  5.     $empresa = $_POST['empresa'];
  6. }else{
  7.     $nombre = "";
  8.     $mail = "";
  9.     $empresa = "";
  10. }
  11.  
  12. ?>
  13.  
  14. <html>
  15. <head>
  16.       <title></title>
  17. </head>
  18. <body>
  19.   <FORM id="contacto" name="contacto" action="nada.php" method="POST">
  20.     <p>
  21.     <label>Nombre <input name="nombre" type="text" id="nombre" value="<?php echo $nombre; ?>"/></label>
  22.     </p>
  23.     <p>
  24.     <label>Empresa<input name="empresa" type="text" id="empresa" value="<?php echo $empresa; ?>"/></label></p>
  25.     <p><label>E-mail <input name="mail" type="text" id="mail" value="<?php echo $mail; ?>"/>
  26.     </label>
  27.     </p>
  28.     <p><input type="submit" name="enviar" value="Enviar" /></p>
  29. </FORM>
  30. </body>
  31. </html>

Etiquetas: formulario, html, 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:18.