• Publicidad

Refrescar página con un formulario

Así que programas sin strict y las expresiones regulares son otro modo de hablar. Aquí encontrarás respuestas de nivel avanzado, no recomendable para los débiles de corazón.

Refrescar página con un formulario

Notapor jjimeno » 2012-09-05 08:01 @375

Buenas a todos.

Tengo un script Perl que ejecuta una query y presenta sus resultados. Esta query se construye a través de los datos introducidos en un formulario en una pantalla previa. Los resultados se presentan en una lista y como el número de elementos puede ser elevado, los he paginado, mostrando en la parte inferior enlaces a cada una de las páginas.

El problema es que si se selecciona otra página, se pierden los datos del formulario, y claro, no se ejecuta la query correctamente. Una opción es pasarlos en la URL del enlace, usando el método GET pero saldría una URL muy grande. ¿Sabéis alguna otra solución, para conservar los datos al cargar otra página del listado?

Gracias de antemano.
jjimeno
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2012-09-05 07:49 @367

Publicidad

Re: Refrescar página con un formulario

Notapor explorer » 2012-09-05 10:55 @496

Bienvenido a los foros de Perl en Español, jjimeno.

Una posible solución es, que cuando el usuario manda el formulario, y tú generas la consulta y los datos, asocies la consulta y los datos generados a una clave, y los guardes en una base de datos. Y al cliente, le mandas una cookie con ese código (no fácil de adivinar, naturalmente).

La próxima vez que el usuario pulse un enlace, recibirás:
  • la cookie, con lo que sabrás qué usuario es, su consulta y recuperarás los datos
  • la petición GET o el enlace te dirán qué página de todas es la que quiere ver el usuario
Con todo eso, ya solo te queda crear el nuevo contenido, y mandárselo.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Refrescar página con un formulario

Notapor jjimeno » 2012-09-06 02:14 @134

Gracias por tu respuesta explorer, en verdad había pensado almacenar las consultas en la base de datos, pero no lo tenía claro y no sabía si sería muy práctico. Ahora lo veo un poco más claro.
¿Para generar claves me recomiendas algún módulo en concreto? ¿El MIME::Base64 podría valer?
jjimeno
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2012-09-05 07:49 @367

Re: Refrescar página con un formulario

Notapor explorer » 2012-09-06 09:05 @420

Pues sí... o con un simple CGI::Session tendrías control total de la gestión de las cookies, la sesión y la generación de la clave.

De hecho, no necesitas saber qué clave es. Si guardas la información como variables de sesión, cada vez que el usuario se conecte solo tienes que recuperar los datos almacenados desde las variables de sesión. No hace falta entonces saber qué clave se está usando o almacenando en la cookie del usuario.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Refrescar página con un formulario

Notapor jjimeno » 2012-09-07 02:30 @146

Buscaré información sobre CGI::Session, nunca lo he usado. Siempre he realizado la gestión de usuarios mediante cookies.

¡Gracias por la ayuda!
jjimeno
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2012-09-05 07:49 @367

Re: Refrescar página con un formulario

Notapor explorer » 2012-09-07 05:26 @268

También tienes ejemplos en CGI::Session::Tutorial. Verás como el uso de cookies es transparente, y lo fácil que es guardar y recuperar información.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Avanzado

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 11 invitados

cron