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
- 17610 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
-
- 689704
- 1
- Jul 5, 2015
Sin Respuesta
-
- 88
- 0
- Oct 18
-
- 167
- 0
- Jul 9
-
- 540
- 1
- Mar 19
-
- 415
- 2
- Feb 26
-
- 4788
- 0
- Nov 7, 2023
-
- 481
- 0
- Sep 19, 2023
-
- 465
- 0
- Ago 21, 2023
-
- 637
- 0
- May 14, 2023
- ver todas
Preguntas relacionadas
Actividad Reciente
alyvrs preguntó Oct 19
Ayuda , necesito mostrar datos creados solo por el…ManHol preguntó Jul 9
pasar un archivo de excel a csv en pythonArtEze respondió Abr 24
Alguien sabe, no me ignorenArtEze seleccionó una respuesta Abr 24
Bajar extensión de Chrome sin actualizar el navega…ArtEze respondió Abr 24
Bajar extensión de Chrome sin actualizar el navega…ArtEze preguntó Abr 24
Bajar extensión de Chrome sin actualizar el navega…ArtEze respondió Abr 24
No me deja instalar OracleArtEze respondió Abr 24
Formulario que guarde los datos de un jsonArtEze comentó Abr 24
Script /boot/ scrapingSantiago2610 comentó Mar 23
Acualizar ChoiceField en django
Ultimas Preguntas
Preguntas relacionadas
Usuarios Top
- Leonardo-Tadei
- 227320 Puntos
- Peter
- 150480 Puntos
- white
- 75880 Puntos
- carlossevi
- 63580 Puntos
- magarzon
- 30650 Puntos
- pregunton
- 20400 Puntos