Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   como mostrar una pagina(html) parte por parte? (https://www.clubdelphi.com/foros/showthread.php?t=54750)

gabrielflowers 28-03-2008 23:22:49

como mostrar una pagina(html) parte por parte?
 
hola a todos, saludos, tengo la duda de como hacer para ir mostrando una pagina html parte por parte, es decir mi pagina tendra 3 tablas horizontales, una en seguida de otra, ahora bien, yo quisiera mostrar mi primer tabla en la pagina mientras voy procesando lo que voy a mostrar en la tabla de en medio, en seguida mostrar dicha tabla, procesar el contenido que voy a mostrar en la ultima tabla de abajo, y por ultimo mostrar la ultima tabla en la pagina html

...he escuchado que se podria hacer con la funcion flush, que deberia ir cargando en cache primero lo que quiero mostrar, pero la verdad es que no tengo algo preciso para hacer esto que explique, alguien me puede ayudar?, me pueden dar un ejemplo completo con la funcion flush y cache?

Ñuño Martínez 31-03-2008 11:49:41

Por lo que leo, una solución es utilizar AJAX (esto es, combinar JavaScript con HTML dinámico y PHP). Busca información sobre el objeto JavaScript llamado "XMLHttpRequest". Un libro que puede ayudarte (a mi me ayudó) es "Introducción a Ajax con PHP (Programación)" de Lee Balbin (ISBN: 9788441522008).

gabrielflowers 31-03-2008 16:27:34

hola Ñuño, oye gracias por tu aporte, pero yo busco una solucion por lado de php, y no de ajax o javascript, creo que mi pregunta lo dice todo; para lo que busco se que debo usar la funcion flush(); de php, pero no se exactamente como cargar primero mi cache con lo que voy a ir mostrando parte por parte, por eso quisiera que alguien me colabore con ejemplo de codigo php para tal efecto ya mencionado
pdta: gracias por la bibliografia recomendada

dec 31-03-2008 16:41:43

Hola,

Pues en el manual de PHP tienes todo lo que puede saberse acerca de la función "flush()". Un ejemplo de uso, aunque ficticio, podría ser este:

Código PHP:

<?php

for($i 1$i <= 10$i++){
  echo 
"Valor de \$i = {$i} <br />";
  
flush();
  
sleep(1);
}

?>

Puedes verlo aquí funcionando, temporalmente. En realidad no hay mucho secreto. La función vacía los "bufferes" de salida acumulados, excepto en servidores bajo Windows, donde no parece funcionar, como puedes leer en la ayuda de la función que enlazo arriba.

keyboy 31-03-2008 17:46:03

Cita:

Empezado por gabrielflowers (Mensaje 276386)
pero yo busco una solucion por lado de php, y no de ajax o javascript

Pero a veces es más adecuado buscar una solución, sin atarnos a una idea. Por ejemplo, el ejemplo que muestra dec funciona perfectamente en FireFox, más no en IE. Y es que flush(), como se indica en la misma página del manual, depende de muchas cosas: del servidor, de módulos de apache (si usas apache), del navegador y ¡hasta del antivirus! que tenga instalado el cliente.

Claro que una solución basada en ajax será dependiente de que el navegador tenga activado el uso de javascript, pero resultan siendo menos elementos de dependencia que el uso de flush. En mi opinión.

Bye

gabrielflowers 31-03-2008 21:27:08

hey keyboy, no es que me ate a una idea, sino que tu bien lo has dicho el uso de ajax depende de que el cliente lo tenga habilitado en su navegador, y justamente lo que buscamos en este proyecto para el cual estoy desarrollando es que el servidor controle todo lo posible, tratando de no usar mucho javascript...
gracias de todos modos

Ñuño Martínez 01-04-2008 10:01:46

Bueno, lo del flush sí, funciona. Lo que pasa es que yo creo que es más para cosas como esta:
Código PHP:

 (...)
foreach (
$ListaElementos as $Elemento) {
  
funcion_que_genera_salida ($Elemento);
  
$Cnt++;
  if ((
$Cnt &#37; 100) == 0) flush (); # Cada cien elementos, envía al cliente.
}
 (...) 

Se me perdona entonces, ¿no? :)

[edit] ¿Por qué no se ve el porciento (37 = %)? :confused:

keyboy 01-04-2008 10:06:16

Cita:

Empezado por Ñuño Martínez (Mensaje 276657)
Bueno, lo del flush sí, funciona.

Ya. Y esto, ¿cómo lo has determinado?

Bye

Julián 01-04-2008 23:49:28

Usetedes me perdonarán, pero yo creo que una web que necsite de usar flush o cosas parecidas es poruq eno debe estar muy bien pensada. Quiero decir que si la cosa está bien estudiada el usuario pone una url, y el servidor no debería devolver un chorro muy grande de bytes. Hablo de aplicaciones web que no sea cosas raras.

Un saludo!

dec 01-04-2008 23:55:22

Hola,

Yo lo del "flush()" lo aprendí aquí en el ClubDelphi, de la mano de Emilio, en un "script" que servía para ver si determinados puertos de un ordenador estaban abiertos o no. El uso de "flush()" en este caso servía para mostrar una especie de "progreso de la tarea", puesto que, por cada puerto procesado, se mostraba (acto seguido, cuando "flush()" funcionaba) se mostraba su estado correspondiente. Desde entonces lo he usado para estos menesteres. ;)

gabrielflowers 02-04-2008 00:37:21

oye julian, tu comentario me parece errado;
veras, me encuentro en un proyecto desarrollando un sistema de informacion en ambiente web,y se me presento este caso que mencione,lo que pasa es que en un sistema informatico conviene ir mostrando quizas de a poco o parte por parte la interfaz de usuario mientras va procesando internamente algo, caso contrario el usuario final se desesperaria a la espera que el sistema muestre algo, creo que ms windows maneja bien este tema, pues mientras carga el SO, va mostrandonos en pantalla un mensaje que dice cargando sistema o algo asi y ese es mas o menos mi caso, que como veras no es que mi aplicacion este mal pensada, si no mas bien que lo hago pensando en la psicologia del usuario final


La franja horaria es GMT +2. Ahora son las 18:50:40.

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