Hola amigos tengo un problema espero me ayuden tengo un formulario con cajas input type="text" donde escribimos datos para enviarlos pero al refrescar la pagina se pierden los datos ya escritos en las cajas de texto como es un cuestionario un poco extenso aveces no queremos llenar los campos otravez como puedo evitar ese problemas para ciertos campos de texto? SALUDOS!! espero me ayuden.
entre Desarrolladores
Recibe ayuda de expertos
Registrate y pregunta
Es gratis y fácil
Recibe respuestas
Respuestas, votos y comentarios
Vota y selecciona respuestas
Recibe puntos, vota y da la solución
Pregunta
Duda Como No Perder los Datos de un Formulario al refresh la Pagina Web PHP
- preguntó
- Web
- 16506 Vistas
- 3 Respuestas
- solucionada
3 Respuestas
Bueno para hacer eso que mencionas existen un millon de formas de hacerse, por ejemplo primero viendo de que forma programas y como llamas a la vista, pues puedes pasarle los datos con php y cargarlos en el value de los input de tipo text con la linea <?php echo $nombrevariable; ?> otra forma es cargando los datos de un fichero tanto con php o con javascript sino quieres usar php, cargas los datos con javascript y cuando se levante la página le asignas el valor a cada input, ya sea leyendo los datos de fichero o consumiendo un REST con JSON, bueno para JavaScript muchos prefieren JQuery que te aría la vida muy facíl y rápida de programar.
Creo que lo primero sería que comentaras que lenguaje de servidor usas o si no usas, y como quieres hacerlo según lo que te expliqué aquí.
Saludos Dairon
con JQuery solo basta poner:
$(document).ready(function() {
//y cuando la página se cargue ejecutará todo lo que implementes aquí tal como
$("#nombreAlumno").val("Alumno Número 1");
});
Mira este ejemplo que es con AJAX:
yo hago algo parecido con ajax y solamente me altera el id que le defino
setInterval('ajax("1","notif_container","../../ajax/coment/gettotal",true,"GET")',10000);
cada 10 segundos el sitio hace la peticion ajax y llena con el resultado que devuelve el metodo getatotal metiendolo dentro de la tag de id=notif_container el método ajax lo puse en git podrías poner un div y dentro del método escribir el input esto hará que cada vez que se haga la petición ajax se te escriba el input exactamente con el valor y como lo definias, yo lo uso en este caso para mostrar un icono de mensajes con un numero con la cantidad de mensajes nuevos.
Saludos Dairon
Por favor, accede o regístrate para añadir un comentario.
Si el formulario es enviado por el usuario:
obten los campos con el metodo de peticion de tu formulario $_GET | $_POST. Sanitizalos por seguridad e imprimelos en el formulario en el atributo value=""
<?php
$campos = array(
'campo_1' => null
);
function escape( &$input )
{
return htmlspecialchars($input, ENT_QUOTES, 'UTF-8');
}
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
$campos = $_POST;
array_walk_recursive($campos, 'escape');
}
echo '
<form method="POST">
<input type="text" name="campo_1" value="' . $campos['campo_1'] . '">
<input type="submit">
</form>';
Si el usuario hace refresh sin enviar el formulario o sale de la pagina:
Como opción podrías enviar por ajax cada x tiempo los datos en el formulario y guardarlos en una sesion.
<?php
session_start();
if (isset($_POST['save_draft']))
{
$_SESSION['draft'] = $_POST;
die();
}
$campos = array(
'campo_1' => null
);
if (isset($_SESSION['draft']))
{
foreach ( $campos as $nombre => $valor )
{
if (isset($_SESSION['draft'][$nombre]))
{
$campos[$nombre] = htmlspecialchars($_SESSION['draft'][$nombre], ENT_QUOTES, 'UTF-8');
}
}
}
echo '
<form method="POST">
<input type="text" name="campo_1" value="' . $campos['campo_1'] . '">
<input type="submit">
</form>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script type="text/javascript">
var save_draft = function() {
var inputs = {
save_draft : 1
};
$("form input[name]").each(function() {
if( $(this).val() == "" )
return;
inputs[$(this).attr("name")] = $(this).val();
});
$.ajax({
"method" : "POST",
"data" : inputs,
"url" : "draft.php",
"success" : function(){}
});
setTimeout(save_draft, 30000);
}
save_draft();
</script>';
aca se envia a draft.php los valores del formulario cada 30 segundos, guardandolos en una variable de sesion.
Por favor, accede o regístrate para añadir un comentario.
Hola @Alan,
adhiero a la solución de @carlossevi: podrías actualizar los valores de los 2 INPUT solamente vía AJAX, de forma tal que no haya que recargar la página.
Otra solución a mitad de camino sería poner los 2 INPUT que se refrescan en un IFRAME y que sea solametne este IFRAME el que se refresque, demanera tal que no se pierda lo que se esté escribiendo en el formulario.
No es una buena estrategia refrescar toda una página en la que el usaurio tiene que escribir datos... se me ocurre alguna solución chapucera para mantenerlos, pero tiene muchas contras y además mientras se refresca el operador verá un desconcertante parpadeo de la pantalla (o demoras en una conexión lenta)
Saludos!
Por favor, accede o regístrate para añadir un comentario.
Por favor, accede o regístrate para responder a esta pregunta.
En el blog
-
- 406150
- 1
- Jul 5, 2015
Preguntas sin respuesta
-
- 25
- 0
- May 14
-
- 42
- 0
- Abr 21
-
- 84
- 0
- Mar 31
-
- 87
- 0
- Mar 27
-
- 512
- 0
- Feb 18
-
- 224
- 0
- Nov 23, 2022
-
- 162
- 0
- Nov 17, 2022
-
- 154
- 0
- Nov 4, 2022
- ver todas las preguntas
Preguntas relacionadas
Actividad Reciente
danielaGM preguntó May 14
Generar reporte con PhpWord con un CRUDrach preguntó Abr 21
Cruzar excel por id con pythonelporfirio respondió Feb 22
Construir URL para actualizar contraseña después d…seniorit respondió Ene 18
¿Como poner privilegio o niveles a los usuarios en…seniorit respondió Ene 10
Como muestro un objeto test(preguntas-respuestas) …yoelrodguez respondió Dic 2, 2022
servidor local xamp disponibile fuera de lanmchojrin respondió Nov 25, 2022
servidor local xamp disponibile fuera de lanPeter comentó Nov 23, 2022
Formulario que guarde los datos de un jsonPeter respondió Nov 21, 2022
categorias wcommerce
Ultimas Preguntas
Preguntas relacionadas
Usuarios Top
- Leonardo-Tadei
- 227320 Puntos
- Peter
- 150420 Puntos
- white
- 75880 Puntos
- carlossevi
- 63580 Puntos
- magarzon
- 30650 Puntos
- pregunton
- 20400 Puntos