Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-01-2008
Avatar de gina
gina gina is offline
Miembro
 
Registrado: sep 2007
Ubicación: Cali-Colombia
Posts: 11
Poder: 0
gina Va por buen camino
Smile Mensaje en pantalla mientras procesa

Hola estoy terminando una aplicacion en php que genera un reporte en pdf con la libreria fpdf, mientras el hace la consulta se demora un poco.....quiero que mientras genera el pdf aparezca en pantalla un mensaje que diga procesando...... algo asi, espero que me haga entender. Se q se puede hacer pero no tengo idea como, sera q me pueden ayudar?
Gracias!!!
Responder Con Cita
  #2  
Antiguo 10-01-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Puede que la función "flush()" te sirva, depende de cómo tengas "montado" el asunto y qué quieras hacer, exactamente. También podrías mostrar un sencillo "GIF" animado que indicara que la tarea está en progreso. Ambas cosas podrían dar resultado. Creo que, por lo que dices, esto último podría resultar más indicado, pero, no estoy seguro.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 10-01-2008
Avatar de gina
gina gina is offline
Miembro
 
Registrado: sep 2007
Ubicación: Cali-Colombia
Posts: 11
Poder: 0
gina Va por buen camino
Cita:
Empezado por dec Ver Mensaje
Hola,

Puede que la función "flush()" te sirva, depende de cómo tengas "montado" el asunto y qué quieras hacer, exactamente. También podrías mostrar un sencillo "GIF" animado que indicara que la tarea está en progreso. Ambas cosas podrían dar resultado. Creo que, por lo que dices, esto último podría resultar más indicado, pero, no estoy seguro.
Gracias por responderme, la verdad es que hay muchas cosas de php que nunca he manejado....mira lo que hago es mediante la aplicacion que esta en php, hacer una conexion a una base de datos firebird el usuario selecciona un rango de fechas y tengo dos opciones una generar el reporte en html (Para este no se demora nada) y la otra generar el reporte en pdf, cuando doy clic en este boton el abre otra ventana en el navegador y empieza a generar el reporte.........pero mientras hace esto se demora un poco........que puedo hacer......nunca he manejado la funcion flush que tu me dices y lo del Gif creo q es lo q quiero pero no se como hacerlo.
gracias!
Responder Con Cita
  #4  
Antiguo 11-01-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

La cosa sería más o menos como sigue. Como tú dices rediriges al usuario a un script que se encarga de generar cierto reporte en PDF. Yo creo que podrías aprovechar dicho script e imprimir (HTML) cierta imagen, como pudiera ser la que adjunto (pero es sólo un ejemplo).

Justo a continuación de imprimir, dar salida a la imagen en cuestión, el script se pone a generar el reporte PDF. Y, cuando termine esta tarea, el mismo script podría "ocultar" la imagen que indica el progreso de la tarea, o redirigir al usuario a cualquier otro sitio.

Iba a adjuntarte un archivo, pero, veo que he excedido mi cuota. Así que aquí mismo puedes ver un ejemplo de lo que hablo. Y puedes descargar los archivos implicados desde aquí. Fíjate que los archivos están en un servidor Linux, de manera que la función "flush()" se comporta como se espera. Según el manual de PHP, la función "flush()" no se comporta igual en Windows. Tendrás que mirar, porque hay que hacer alguna que otra cosa además.

Fíjate que al entrar en el ejemplo se te mostrará una imagen que indica el progreso de una supuesta tarea. A los cinco segundos (que tarda en llevarse a cabo la tarea simulada) podrás ver un mensaje "Reporte generado", que indicará que la tarea se llevó a cabo. En ese momento podrías redirigir al usuario a otro lugar, ocultar la imagen que indica el progreso, en fin, eso ya depende.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 11-01-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Como ha dicho ya david, esto depende mucho de cómo lo tengas montado.

Podrías presentar una página "intermedia" que diga un mensaje como "espere, estamos trabajando..." y que esta haga una redirección a la página que genera el pdf. Mientras esta página se carga, el usuario verá el mensaje.

Otra cosa es tener un gif, como ya ha dicho también david, pero invisible, y activarlo por javascript justo antes de mandar a generar el pdf.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #6  
Antiguo 11-01-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Aclaro que escribí mi post anterior antes de ver la última respuesta de dec, que está mucho mas elaborada.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #7  
Antiguo 11-01-2008
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Poder: 20
keyboy Va por buen camino
Estuve viendo el ejemplo que presentan, pero en mi caso la imagen no aparece sino hasta que termina de generarse el reporte. Leyendo la entrada del manual que enlazan, veo el siguiente comentario de un usuario:

Cita:
If flush() don't work remember to check if you have any antivirus caching the data sent to the browser.
Y, en efecto, al desactivar el antivirus (avast), el ejemplo funciona perfectamente.

Pensando una solución alterna, probé con ajax y al parecer funciona este ejemplo basado en el de ustedes.

Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<
html>
<
head>
<
meta http-equiv='Content-Type' content='text/html; charset=ISO-8859-1'>
<
title>Reportes en PDF</title>
<
script type='text/javascript'>
/**
 * Crea un objeto HTTPRequest (peticiones HTTP en segundo plano)
 *
 * Posiblemente haya que ampliarla paa abarcar más casos.
 */
function createRequest()
{
    if (
window.XMLHttpRequest)
    {
        return new 
XMLHttpRequest();
    }
    else if (
window.ActiveXObject)
    {
        return new 
ActiveXObject('Microsoft.XMLHTTP');
    }

    return 
null;
}

/**
 * Manejador del evento onload
 *
 * Una vez cargada la página, hacemos una petición HTTP en segundo plano para
 * iniciar la generación del reporte. Cuando esté terminado, el evento
 * onreadystatechange se activará y ahí pondremos visible el mensaje.
 */
window.onload = function()
{
    var 
request createRequest();
    
    
request.onreadystatechange = function()
    {
        if (
request.readyState == && request.status == 200)
        {
            
oMensaje document.getElementById('mensaje');
            
oMensaje.style.display 'block';
        }
    }
    
    
request.open('get''reporte.php'true);
    
request.send();
}
</script>
</head>
<body>

<div style="text-align: center;">
    <img src="icon_inprogress.gif" width="180" 
     height="180" alt="Generando el reporte PDF..." /> 
</div>

<div style='text-align: center; display: none' id='mensaje'>
<h1>Reporte generado</h1>
</div>

</body>
</html> 
Bye
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Procedimiento que no procesa todos los registros sitrico Firebird e Interbase 3 18-09-2007 22:57:46
While mientras no se haga click ANG4L Varios 2 22-05-2006 14:41:23
mensaje mientras hay proceso marcelofabiani Varios 9 13-02-2006 05:18:27
mensaje en pantalla davidgaldo Conexión con bases de datos 3 11-10-2005 09:44:51
Mi mensaje nº 300 "Me pagan por Mirar una pantalla" tcp_ip_es Humor 1 16-07-2004 16:54:30


La franja horaria es GMT +2. Ahora son las 11:23:14.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi