• Publicidad

Problemas con parámetros

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Problemas con parámetros

Notapor danielamonmor » 2009-02-12 19:53 @870

Hola, el problema que tengo es que no sé cómo pasar parámetros ocultos. Les explico lo que estoy haciendo.

Estoy haciendo un script en Perl cuya función es generar reportes de acuerdo a una serie de opciones.

Esas opciones incluyen popus, radios, checkbox y campos de texto. Cuando yo doy clic en el botón Generar Reporte, todo va bien: los parámetros pasan ocultos y pongo una ventana en pantalla la cual le indica al usuario que el reporte se está generando. Hasta ahí va todo bien. El problema radica que donde le indico al usuario que el reporte se está generando, hago un refresh para que me redireccione al programa correcto de acuerdo a las opciones que el usuario seleccionó.

Ya cuando me enlaza al programa correcto me aparecen los parámetros en la barra del explorador. Intenté pasarlos con un hidden pero no lo hace. Aquí pongo la rutina que estoy utilizando.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
if ($FORM{modo_reporte} == 1) {
   $redirecciona="rep_programacpartida.cgi?$url_param&tipo_prog=$FORM{tipo_prog}$gerencias$programas$tipo_consolidado&tipo_reporte=$FORM{tipo_reporte}&delapart=$FORM{delapart}&alapart=$FORM{alapart}&delmes=$FORM{delmes}&almes=$FORM{almes}&anioconsulta=$FORM{anioconsulta}"
} elsif ($FORM{modo_reporte} == 2) {
   $redirecciona="rep_programa.cgi?$url_param&tipo_prog=$FORM{tipo_prog}$gerencias$programas$tipo_consolidado&tipo_reporte=$FORM{tipo_reporte}&delmes=$FORM{delmes}&almes=$FORM{almes}&anioconsulta=$FORM{anioconsulta}"
} elsif ($FORM{modo_reporte} == 3) {
   $redirecciona="rep_partida.cgi?$url_param&tipo_prog=$FORM{tipo_prog}$gerencias$programas$tipo_consolidado&tipo_reporte=$FORM{tipo_reporte}&delapart=$FORM{delapart}&alapart=$FO
RM{alapart}&delmes=$FORM{delmes}&almes=$FORM{almes}&anioconsulta=$FORM{anioconsulta}"

} elsif ($FORM{modo_reporte} == 4) {
   $redirecciona="rep_capitulo.cgi?$url_param&tipo_prog=$FORM{tipo_prog}$gerencias$programas$tipo_consolidado&tipo_reporte=$FORM{tipo_reporte}&delapart=$FORM{delapart}&alapart=$FORM{alapart}&delmes=$FORM{delmes}&almes=$FORM{almes}&anioconsulta=$FORM{anioconsulta}"
 } else { # aqui entran los historicos

 }

 $table0=new HTML::Table(-rows=>3,-cols=>1,-width=>"50%",-spacing=>0,-padding=>0,-border=>1,-bgcolor=>"#f6f6f6",-style=>"border-collapse:collapse;");

 $table0->setCell(1,1,"<font size=4 color=\"white\"><b>$msj_titulo</b></font>");

 $table0->setCell(2,1, "<br> $msj_cuerpo <br> <br> <img src=\"$server/images/firco/carpetas.gif\"</img> <br> <img src=\"$server/images/firco/barrracolor.gif\"</img>");
 
$table0->setCell(3,1, "<meta HTTP-EQUIV=\"refresh\" content=\"0; URL=$redirecciona\"");

 $table0->setCellAlign(1,1,"LEFT");
 $table0->setCellBGColor(1,1,"#003366");
 $table0->setCellAlign(2,1,"CENTER");
 $table0->setCellAlign(3,1,"CENTER");
 $table0->setCellNoWrap(1,2,"0");

 print print header(-expires=>'now');
 &print_cabeza();    # esta funcion se encuentra en el (pm)
 print '<center>';
 $table0->print;
 print '</center>';
 print end_html();
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4


Esa es la rutina, que le indica al usuario que el reporte se está generando y la que hace el refresh, lo que no he podido hacer es que me redireccione al programa sin que me ponga los parámetros en la barra de direcciones, pero que los pase al programa donde se está enlazando.

Espero y me puedan ayudar o dar una idea de cómo hacerle.
danielamonmor
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2008-09-30 12:06 @546

Publicidad

Notapor explorer » 2009-02-12 20:09 @881

Cambia el aviso o confirmación al usuario con un alert() en JavaScript justo en el momento de pulsar el botón de envío en el formulario. Si el usuario responde afirmativamente, aparece ya la salida generada por el reporte (el cgi llama al proceso a ejecutar, ya que se espera que sea él el que termina de rellenar la página).

El que salgan los parámetros es porque tu mismo los colocas en el URL del refresh. Lo que hay que hacer entonces es evitar ese refresco, evitar ese paso intermedio.

Para ello, informamos al usuario con el alert() y según lo que nos responda, seguirá con el POST o no. EL cgi que recibe los parámetros podrá iniciar la presentación de la página de resultados y llamar al proceso final. O llamar al proceso, capturar su salida, y con todo, confeccionar la página que verá el usuario.

Bueno, es una forma de hacerlo. A ver si a alguien más se le ocurre otra.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

PARAMETROS

Notapor danielamonmor » 2009-02-16 13:46 @615

Gracias por tu respuesta explorer. ¿Lo que me quieres decir es que cuando el usuario le de un clic en el botón generar reporte, le mande la leyenda de que el reporte se está generando?

Lo que no entendí es dónde si el usuario responde afirmativamente.

El paso intermedio lo puse, porque algunos reportes se tardan un poco en generarse. También dependiendo de lo que seleccionan el sistema se redirecciona al programa que le corresponde. Pero necesito una leyenda que le indique al usuario que el reporte se está generando, pero sin que se muestren los parámetros en la barra de direcciones.
danielamonmor
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2008-09-30 12:06 @546

Notapor explorer » 2009-02-17 15:33 @689

La idea era, desde JavaScript, sacar una caja con alert(), para que el usuario confirmase lo que va a pasar a continuación.

Ahora que recuerdo, tuve que hacer algo así y la solución fue que el proceso emitía un gráfico o punto, que salía inmediatamente en el navegador web. El truco estaba en desactivar la cache de salida ($|=1).

Otra solución es la comentada por Randal en agosto de 2002: Watching long processes through CGI.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot] y 5 invitados

cron