Foros del Web » Programando para Internet » PHP »

No perder Datos del Form trasrecargar la pagina

Estas en el tema de No perder Datos del Form trasrecargar la pagina en el foro de PHP en Foros del Web. Hola, tengo un formulario grande, y estoy intentando evitar que tras recargar una pagina por ejemplo al validar un fecha si no es correcta desaparezca ...
  #1 (permalink)  
Antiguo 17/03/2015, 05:52
 
Fecha de Ingreso: abril-2010
Ubicación: Extremadura
Mensajes: 128
Antigüedad: 14 años
Puntos: 2
No perder Datos del Form trasrecargar la pagina

Hola, tengo un formulario grande, y estoy intentando evitar que tras recargar una pagina por ejemplo al validar un fecha si no es correcta desaparezca todo lo escrito anteriormente, leyendo he visto que se puede utilizar usando variables de sesion, me recomendais esa forma de hacerlo? o teneis alguna mejor?

Graciassss
  #2 (permalink)  
Antiguo 17/03/2015, 06:44
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Respuesta: No perder Datos del Form trasrecargar la pagina

Hola churretin.

Una de las opciones más básicas que se me ocurre sería así:

Código PHP:
Ver original
  1. <form method="post" action="enviar.php">
  2.                     <label>Título:</label><input type="text" name="titulo" value="<?php if(isset($_POST["titulo"])){ echo $_POST["titulo"];} ?>"><br />
  3.  <label>Descripción:</label><input type="text" name="descripcion" value="<?php if(isset($_POST["descripcion"])){ echo $_POST["descripcion"];} ?>"><br />
  4.  <input type="submit" value="Enviar" name="enviar">
  5. </form>

Al cargar la página por ejemplo en el valor del input título te pregunta si existe el valor de la variable "titulo" ($_POST["titulo"]) y si es así te la imprime o te la muestra (con echo $_POST["titulo"];). Sí la rellenas y pulsas el botón enviar y falta algún otro campo por completar este campo aparecerá de nuevo ya que existe y así uno tras otro.
  #3 (permalink)  
Antiguo 17/03/2015, 07:00
 
Fecha de Ingreso: marzo-2015
Mensajes: 9
Antigüedad: 9 años, 1 mes
Puntos: 2
Respuesta: No perder Datos del Form trasrecargar la pagina

Yo tuve un problema similar, lo que hice fue generar una página de comprobacion PHP, a la que mandaba todos los datos por post, los validaba y si estaban bien, redireccionaba directamente al resultado y si estaba mal sacaba el mensaje correspondiente, con el boton volver, ese boton era un form invisible y le metí nuevamente todos los datos por post y al volver a la página anterior reviso si vengo del boton volver o del boton inicial y los input los relleno con los post que traigo del boton volver. Es un coñazo, pero es lo mas efectivo creo yo...
  #4 (permalink)  
Antiguo 17/03/2015, 07:55
 
Fecha de Ingreso: marzo-2015
Ubicación: Peru
Mensajes: 34
Antigüedad: 9 años, 1 mes
Puntos: 6
Respuesta: No perder Datos del Form trasrecargar la pagina

si solo quieres validar una fecha no es necesario reacargar la página, puedes utilizar javascript para esto.
  #5 (permalink)  
Antiguo 17/03/2015, 10:16
 
Fecha de Ingreso: abril-2010
Ubicación: Extremadura
Mensajes: 128
Antigüedad: 14 años
Puntos: 2
Respuesta: No perder Datos del Form trasrecargar la pagina

Hola #kahlito tu solución no me es valida, ya que mando a un controlador los datos para verificarlo y si falla la verificación me devuelve al controlador anterior, por lo que se pierden los post.

#jluishuaman no es solo una fecha son, varias decebas de campos, de ahi su importancia.
  #6 (permalink)  
Antiguo 17/03/2015, 10:31
 
Fecha de Ingreso: marzo-2003
Ubicación: Gandia, Valencia, España
Mensajes: 55
Antigüedad: 21 años
Puntos: 3
Respuesta: No perder Datos del Form trasrecargar la pagina

En tu controlador de verificación, empiezas copiando los datos

$_SESSION['datosformulario'] = $_POST;

... Verificas y haces las operaciones necesarias.

Es válido?
Si >> Borro $_SESSION['datosformulario'] y continuo
No >> Vuelvo a controlador/formulario

<input type="text" name="nombre" value="<?php if(isset($_SESSION['datosformulario']['nombre'])){ echo $_SESSION['datosformulario']['nombre'];} ?>">
__________________
Sueño luego existo
  #7 (permalink)  
Antiguo 17/03/2015, 11:26
 
Fecha de Ingreso: abril-2010
Ubicación: Extremadura
Mensajes: 128
Antigüedad: 14 años
Puntos: 2
Respuesta: No perder Datos del Form trasrecargar la pagina

si uso set_flashdata() no tengo que borrar la variable de sesion que genero no??

Edito: Perdon esa funcion es de codeigniter

Última edición por churretin; 17/03/2015 a las 12:00
  #8 (permalink)  
Antiguo 17/03/2015, 14:26
 
Fecha de Ingreso: marzo-2015
Mensajes: 9
Antigüedad: 9 años, 1 mes
Puntos: 2
Respuesta: No perder Datos del Form trasrecargar la pagina

A mi no me gustan las variables de session, siempre que las he usado me han dado problemas porque la gente carga y recarga las páginas y las deja abirtas y luego las retoman y guardan las direcciones y acceden directamente... en resumen, la gente toca mucho las pelotas y las variables de session, pueden darte muchos problemas... Mi solución preferida es la que te he dicho antes, si quieres te pego parte del codigo por si no t ha quedado claro...
  #9 (permalink)  
Antiguo 18/03/2015, 03:04
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Respuesta: No perder Datos del Form trasrecargar la pagina

Cita:
Iniciado por churretin Ver Mensaje
Hola #kahlito tu solución no me es valida, ya que mando a un controlador los datos para verificarlo y si falla la verificación me devuelve al controlador anterior, por lo que se pierden los post.

#jluishuaman no es solo una fecha son, varias decebas de campos, de ahi su importancia.
Entonces creo que te podría servir algo así:

controlador.php

Código PHP:
<?php
 
// Si recibo los datos o se ha pulsado enviar                
                
if(isset($_POST['enviar'])){
                
//Declaro las variables 
                
$usuario mysql_real_escape_string($_POST['usuario']);
                
$password mysql_real_escape_string($_POST['password']);    
                
//Si hay algún campo vacío aviso de error.                      
                
if($_POST["usuario"] == "" || $_POST["password"] == ""){    
                    
//Redirecciono a la página del formulario para avisar del error y que a la vez devuelva los datos completados hasta el momento.                
header("location: entrada.php?errorLogin=1&usuario=$usuario&password=$password");
                }
                
//Si se rellenan los campos compruebo datos
                
else{
echo 
"Todo ok y preparo el envío";
}
}
//Fin enviar
?>
Y en el archivo actual donde se rellena el formulario, por ejemplo entrada.php :

Código PHP:
<?php
if(isset($_GET["errorLogin"])){    
                    echo 
"<p class=\"error\">Error: </p>";
                    
//Preparo las variables de los campos del formulario para traerlas aqui
                    
if(isset($_GET["usuario"])){    
                    
$usuario mysql_real_escape_string($_GET['usuario']);
                    }
                    if(isset(
$_GET["password"])){    
                    
$password mysql_real_escape_string($_GET['password']);
                    }                        
                    if(
$_GET["errorLogin"] == "1"){
                        echo 
"<p class=\"error\">Error: Hay algún campo vacío.</p>";                        
                    }
//
}
//Incluyo el formulario controlador o verificador 
include("inc/formulario-controlador.php");           
?>
formulario-controlador.php

Código PHP:
<?php        
//Si se reciben los datos por get
            
if(isset($_GET["usuario"]) || isset($_GET["passowrd"])){
                
//echo "El usuario es: ". $usuario;
            
?>
             <form method="post" action="controlador.php">
                <label>Nombre de usuario: </label><input type="text" name="usuario" value="<?php if(isset($_GET["usuario"])){ echo $_GET["usuario"];} ?>"><br />
                <label>Contraseña: </label><input type="password" name="password" value="<?php if(isset($_GET["password"])){ echo $_GET["password"];} ?>"><br />
                <div class="submit">
                    <input type="submit" value="Entrar" name="enviar">
             </form>

          
            <?php
            
}
            else{ 
//Si se reciben los datos por post.
                
?>
            
            <form method="post" action="controlador.php">
                <label>Nombre de usuario: </label><input type="text" name="usuario" value="<?php if(isset($_POST["usuario"])){ echo $_POST["usuario"];} ?>"><br />
                <label>Contraseña: </label><input type="password" name="password" value="<?php if(isset($_POST["password"])){ echo $_POST["password"];} ?>"><br />
                <div class="submit">
                    <input type="submit" value="Entrar" name="enviar">
              </form>
                     
</div>
<?php
}
?>
No se si me explico o es parecido a lo que quieres hacer, he utilizado un ejemplo básico que quizás te puede servir.

Saludos.

Última edición por kahlito; 18/03/2015 a las 03:06 Razón: Me falta una }//Fin enviar
  #10 (permalink)  
Antiguo 18/03/2015, 03:10
 
Fecha de Ingreso: abril-2010
Ubicación: Extremadura
Mensajes: 128
Antigüedad: 14 años
Puntos: 2
Respuesta: No perder Datos del Form trasrecargar la pagina

La solución anterior me parece valida, pero un poco enrevesada? No la descarto pero tiene que haber una forma mas normalita por decirlo de algun modo jijiji
  #11 (permalink)  
Antiguo 18/03/2015, 07:55
 
Fecha de Ingreso: marzo-2015
Ubicación: Peru
Mensajes: 34
Antigüedad: 9 años, 1 mes
Puntos: 6
Respuesta: No perder Datos del Form trasrecargar la pagina

hola, como te dije usa javascript, creas una funcion y por cada fecha ingresada se valide mediante la funcion
  #12 (permalink)  
Antiguo 18/03/2015, 11:47
 
Fecha de Ingreso: abril-2010
Ubicación: Extremadura
Mensajes: 128
Antigüedad: 14 años
Puntos: 2
Respuesta: No perder Datos del Form trasrecargar la pagina

intento usar lo menos posible javascript, aunque no se que es peor si usar javascript o tener problema con la sesiones, ustedes que prefieres? como suelen hacerlo?
  #13 (permalink)  
Antiguo 18/03/2015, 17:31
Avatar de baccxus  
Fecha de Ingreso: mayo-2005
Ubicación: Panama city, Panama, Panama
Mensajes: 870
Antigüedad: 18 años, 10 meses
Puntos: 17
Respuesta: No perder Datos del Form trasrecargar la pagina

Por lo general usaba JS como Mootools para verificar formularios, pero últimamente puedes usar la validación de etiquetas de forma nativa en HTML5:
http://html5facil.com/tutoriales/val...nativos-html5/

mira a ver si te sirve y nos comentas.

Saludos!
__________________
Al final del día hablar es gratis, codificar no lo es
  #14 (permalink)  
Antiguo 19/03/2015, 02:52
 
Fecha de Ingreso: abril-2010
Ubicación: Extremadura
Mensajes: 128
Antigüedad: 14 años
Puntos: 2
Respuesta: No perder Datos del Form trasrecargar la pagina

Holaaa, bueno gracias por contestar, pero mi problema viene mas de como volver a poner los datos validos en su sitio de nuevo tras enviar un formulario y que lo devuelva por no validar algun campo, al ser un formulario grande, no quiero que el usuario tenga que volver a escribir todos los campos.

Un saludo.
  #15 (permalink)  
Antiguo 19/03/2015, 09:55
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Respuesta: No perder Datos del Form trasrecargar la pagina

Hola de nuevo.

Intenta probar con los ejemplos que te he puesto o incluso con el primero, sino pues mira también este problema que tuve hace poco precisamente con un select, no es con fechas pero quizás tiene relación con lo que buscas.

http://www.forosdelweb.com/f18/mante...mysql-1123300/

Saludos.
  #16 (permalink)  
Antiguo 19/03/2015, 10:29
 
Fecha de Ingreso: abril-2010
Ubicación: Extremadura
Mensajes: 128
Antigüedad: 14 años
Puntos: 2
Respuesta: No perder Datos del Form trasrecargar la pagina

Gracias voy a ver, y no el problema no es con fecha es algo general, es un formulario con campos de todo tipo, antes de empezar queria saber cual es la mejor manera de hacerlo.

Etiquetas: fecha, form, formulario, perder, variable
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 14:59.