Foros del Web » Programando para Internet » PHP »

Imprimir mensaje mientras se ejecuta una consulta

Estas en el tema de Imprimir mensaje mientras se ejecuta una consulta en el foro de PHP en Foros del Web. Saludos. Tengo lo siguiente: Estoy generando una consulta que tarda un poco por la cantidad de registros que esta buscando. Lo que quiero es colocar ...
  #1 (permalink)  
Antiguo 16/03/2005, 07:23
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 22 años, 3 meses
Puntos: 1
Imprimir mensaje mientras se ejecuta una consulta

Saludos.

Tengo lo siguiente:

Estoy generando una consulta que tarda un poco por la cantidad de registros que esta buscando.

Lo que quiero es colocar un mensaje en pantalla de "Generando..." mientras se termina de ejecutar toda la consulta.

Y una ves terminada la cargar toda la consulta, el mensaje de "Generando..." desaparezca.

Cómo puedo hacer eso??

Gracias
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.
  #2 (permalink)  
Antiguo 16/03/2005, 10:58
 
Fecha de Ingreso: julio-2003
Ubicación: Colombia
Mensajes: 591
Antigüedad: 20 años, 9 meses
Puntos: 7
Bueno yo lo haria con javascript...
Chaop!
  #3 (permalink)  
Antiguo 16/03/2005, 14:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Puedes usar flush() para forzar a PHP a que entregue lo que tenga en el buffer de salida (hacia el "cliente" .. navegador).

El uso sería algo tipo:

Código PHP:
echo "espere....";
flush();
// proceso largo PHP ...
etc .. 
Ten cuidado con el uso del control de buffer de salida de esa forma .. si tienes una página completa .. tablas y otros tag's de HTML . .ten presente que cara al navegador no se habrá completado la página HTML que debe interpretar .. así que según el navegador que uses puedes obtener resultados no deseados (tablas que no se cierran .. o se compone su contenido .. etc..).


Un saludo,
  #4 (permalink)  
Antiguo 18/03/2005, 10:32
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 22 años, 3 meses
Puntos: 1
Termine por resolverlo con javascript:

$query = "SELECT * FROM TABLA"

while {

}

Ok, antes de comenzar el while, usea javascript dentro del PHP para imprimir un mensaje, EJ:

Código PHP:
   echo "<script LANGUAGE='Javascript'>n"
 echo 
"<!--n"
 echo 
"document.write("
 
echo "    var divs = document.getElementsByTagName('span');n"
 echo 
"    for(var i = 0, n = divs.length; i < n; ++i) {n"
 echo 
"  if (divs[i].name = 'Mensaje1') {n"
 echo 
"    divs[i].innerHTML = 'Texto 1;n"
 echo 
"    }n"
 echo 
"    }n"
 echo 
"//-->n"
 echo 
"</script>n"

Luego al final despues del WHILE, con javascript nuevamente mande a imprimir otro mensaje en ese mismo , EJ:

</span>
Código PHP:
echo "<script LANGUAGE='Javascript'>n"
 echo 
"<!--n"
 echo 
"    var divs = document.getElementsByTagName('span');n"
 echo 
"    for(var i = 0, n = divs.length; i < n; ++i) {n"
 echo 
"  if (divs[i].name = 'Mensaje1') {n"
 echo 
"    divs[i].innerHTML = 'TEXTO 2 ';n"
 echo 
"    }n"
 echo 
"    }n"
 echo 
"//-->n"
 echo 
"</script>n"

Espero ltse funcione tan bien como a mi.

Suerte
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.
  #5 (permalink)  
Antiguo 18/03/2005, 10:45
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Bueno .. donde muestres el mensaje en la página o como es lo de menos (si abres una ventana y la cierras . .o incrustras HTML embebido .. )

El caso es (para que hagas algunas pruebas ..) usa un bucle grande que se demore un tiempo .. o simplemente usar sleep() a unos cuantos seguntos .. Fijate bien en que orden o cuando ves tus mensajes de "inicio" y "fin" del proceso.

PHP por lo generar no entrega su salida a PHP hasta que termina la ejecución del script por completo. El resultado de este es enviado al "cliente" (tu navegador) y el hace su parte (ejecutar ese javascript o DHTML).

En teoría .. antes de entrar a tu "While" (donde recorres tu consulta SQL ejecutada) y despues del primer bloque de javascript .. tendrías que "forzar" a PHP a entregar lo que tenga (ese HTML+Javacript) al cliente para que lo vaya interpretando ..

Un saludo,

Un saludo,
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:28.