Foros del Web » Programando para Internet » PHP »

modos de generar pagina html en php

Estas en el tema de modos de generar pagina html en php en el foro de PHP en Foros del Web. Hola, mi problema es el siguiente. Estoy programando un aplicacion web, que accede a una base de datos y muestra los resutados en forma de ...
  #1 (permalink)  
Antiguo 24/05/2007, 03:54
 
Fecha de Ingreso: abril-2004
Ubicación: Valencia
Mensajes: 436
Antigüedad: 20 años
Puntos: 8
modos de generar pagina html en php

Hola,
mi problema es el siguiente. Estoy programando un aplicacion web, que accede a una base de datos y muestra los resutados en forma de tabla. La cantidad de resultados que muestra es increible, porque la cantidad de datos de la BD es brutal. Y me refiero a que igual en una consulta puede responder con una pagina html con una tabla de 60.000 filas.
De momento ocurre lo siguiente, el usuario introduce unos parametros en un formulario, envia los datos y el servidor empieza a responder con los resultados de la consulta de la BD con un while y a base de Print() . Entonces la pagina se carga y van apareciendo datos, y mas, y mas... Entonces el navegador (no entiendo por que) empieza a chupar cpu, y practicamente se bloquea hasta que ha acabado de mostrar la informacion (que tarda unos 30 segundos).

Mi pregunta es, podria hacerlo de forma que se muestre una pagina en plan "Por favor espere..." y que SOLO CUANDO TODA LA PAGINA con el resultado de la consulta haya sido generada entonces la envie al cliente?

Creo que esto es lo que hacen los cgi's no? Envian la pagina completa cuando ya ha sido generada. Se pueden hacer cgi's con php? tiene sentido?

Como podria resolver esto con php?

Gracias de antemano,
un saludo.
  #2 (permalink)  
Antiguo 24/05/2007, 04:22
 
Fecha de Ingreso: mayo-2007
Mensajes: 11
Antigüedad: 17 años
Puntos: 0
Re: modos de generar pagina html en php

Regla numero 1 que jamas debes violar... jamas jamas jamas jamas se muestran listas mediante HTML sin paginar.

Intentar mostrar 60.000 lineas en una pagina HTML es un error muy grave, asi como mostrar listas sin controlar el numero de lineas. Jamas debes pasar de unas 50 lineas por pagina.

Otra cosa es si alguien quiere descargarse un listado, entonces no uses HTML es un error usar un lenguaje unicamente pensado para visualizacion con tantos datos de golpe. Mataras cualquier navegador.
  #3 (permalink)  
Antiguo 24/05/2007, 04:41
 
Fecha de Ingreso: abril-2004
Ubicación: Valencia
Mensajes: 436
Antigüedad: 20 años
Puntos: 8
Re: modos de generar pagina html en php

Hola,
gracias por la respuesta. El sentido de hacerlo asi, era porque la persona que tiene que ver dichos datos tiene que validarlos, o digamos hacer una especie de control de calidad "a ojo". Y cuando digo a ojo, no me refiero a que tiene que ver dato por dato, sino que habra muchos datos repetidos cientos, o a veces miles, y el tiene que detectar "rafagas". No se, es una cosa complicada, pero vamos la versatilidad que le da el poder desplazarse rapidamente arriba y abajo con la barra del navegador, solo se la puede dar un archivo de texto, pero desde luego es mucho mas incomodo generar un archivo de texto a cada consuta que hacerlo via web. En cualquier caso, esta claro que el navegador web como tu dices no esta hecho para esto, pero una vez cargada la pagina con los 60.000 o 40.000 o 50.000 resultados (varia) el comportamiento no es malo, es decir se desplaza por la pagina sin ningun problema. Lo unico es que me gustaria que cargara la pagina cuando todos los resultados estuvieran listos, o sea, cuando el servidor hubiera acabado, porque lo que realmente lo mata es ir mostrandolos a medida que el servidor se los va enviando. Igual esto se podria conseguir haciendo que el servidor inyectara todos los datos en un archivo de texto (al que le añadiera las etiquetas <HTML>...</HTML>) y luego redireccionara a dicho archivo html. La verdad no tengo ni idea, ¿Que pensais?

En fin, de todos modos, me interesaria tambien la opcion de que generara un archivo de texto con los resultados para descargarlo, alguien me puede indicar algunas funciones para manejar archivos para que las pueda mirar en la doc de php?

Gracias,
saludos.
  #4 (permalink)  
Antiguo 24/05/2007, 04:49
 
Fecha de Ingreso: mayo-2007
Mensajes: 11
Antigüedad: 17 años
Puntos: 0
Re: modos de generar pagina html en php

En estos casos si de verdad quieres que alguien lo pueda ver hay un truco muy sencillo que se lo permitira.

Requerira eso si que el cliente tenga instalado o bien el excel o el openoffice calc.

Existe un header de respuesta en html denominado content-type, php normalmente siempre pone dicho header con la propiedad text/html y es dicha propiedad la que el navegador utiliza para determinar si pinta la pagina el mismo, la descarga o usa una aplicacion externa para su renderizado como por ejemplo flash, pdf, etc.

La forma en la que lo tienes que hacer es la siguiente:

Primero que tu pagina HTML de respuesta sea simple, es decir que solo contenga los tags html basicos y la tabla. Lo segundo y muy importante es colocas como header content-type application/ms-excel

Es decir, al principio de tu pagina (solo sirve si son las primeras lineas de codigo)

<?php
header('content-type: application/ms-excel');
?>

Una cuestion mas de estilo es que deberias mostrar el listado paginado en HTML para que pueda ir navegando pagina a pagina y DAR la oportunidad mediante un link del estilo "visualizar en hoja de calculo" para que se descargue el listado de la forma anterior.

No te preocupes por el hecho de escribir la tabla excel en HTML, excel entiende HTML y lo pintara bien.
  #5 (permalink)  
Antiguo 24/05/2007, 06:20
 
Fecha de Ingreso: abril-2004
Ubicación: Valencia
Mensajes: 436
Antigüedad: 20 años
Puntos: 8
Re: modos de generar pagina html en php

Mmhhh gracias por el truco, puede ser interesante.
Sobre lo de crear ficheros de texto con php para descargar, alguien puede darme una pista, osea algunas funciones utiles para abrir fich, volcar contenido, cerrar, etc...

Gracias,
saludos.
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 12:39.