From: Vladimir Hernandez (
vladimir(EN)inter-connect.us)
Date: Mon Nov 15 2004 - 11:26:59 CET
On Monday 15 November 2004 03:39 pm, Ferran Orsola wrote:
> Hola gente,
>
> Tengo una web en PHP 5 con base de
datos mysql.
>
> Una de las funciones de dicho site
tiene que ser la generacion de cierta
> information de la base de datos en
CSV. La funcion de generar el CSV ya
> esta hecha y funciona de fabula,
mediante un formulacio para seleccionar
> los criterios de busqueda y una
libreria en PHP que genera el CSV.
>
> Para mas informacion mirar el
siguiente codigo:
>
> <?php
>
include("library.ini.php");
> authentication(0);
>
>
include("statistics.ini.php");
>
> $response =
createStatistic($_POST);
>
> $len = strlen($response);
>
> //Avoid bug in IExplore
> header("Pragma: ");
> header("Cache-Control:
");
> header("Expires: Mon, 26 Jul 1997
05:00:00 GMT");
> header("Last-Modified: " .
gmdate("D, d M Y H:i:s") . " GMT");
> header("Cache-Control:
post-check=0, pre-check=0", false);
> // END
>
> header("Content-type:
text/csv\n");
> header("Content-disposition:
inline; filename=statistics.csv");
> header("Content-transfer-encoding:
binary\n");
> header("Content-length:
$len\n");
>
> echo "$response";
>
> ?>
>
> Evidentemente el form del
cuestionario apunta a esta pagina.
>
> El problema que tengo es que
quiero que sacar un pagina de gracias y a
> la vez generar el CSV. El rpoblema
es que si genero una pagina
> intermedia y luiego lanzo este
codigo se crea un error ya que el headers
> ya esta definido como
texto/html.
>
> Alguien sabe como cerrar un output
y text/html y luego crear otro
> text/csv? O alguna otra idea para
poder hacer lo que quiero?
>
> A veces ademas si el CSV tarda
mucho tiempo en generarse se crea un time
> out, para evitar esto me gustaria
tener una pagina intermedia con una
> barra de tiempo y que cuando acabe
se genere la pagina de gracias y el
> CSV. Sabeis como hacer
esto???
>
> Me iria muy bien algun codigo
parecido para ver como lo habeis hecho.
>
> Gracias a todos,
>
> Ferran Orsola
>
> P.D.: Por cierto alguno de
vosotros sabe si existe Internet Explorer
> para linux? Lo necesito para
probar mis javascripts para plataformas
> microsoft. No quiero recurrir a
instalar una particion para windows en
> mi laptop solo para probar eso,
linux me gusta mucho mucho mas, no se
> porque :-)
Una cosa a la vez:
- Para una página intermedia no hay, que yo sepa, el
truco perfecto. Lo que yo
he hecho es cargar la página de "please wait", y hacer
un OnLoad con
JavaScript en <body> que me envíe al script que
generará el archivo de texto,
en tu caso CSV.
- Otra solución, menos elegante pero más
confiable (pues algunas personas
deshabilitan JavaScript en sus máquinas) es la de
poner un header("Location:
mi_script.php"); donde mi_script.php es el que genera el
archivo de texto.
Esto se manda llamar desde el script principal con el
formulario que
mencionabas, y mi_script.php no genera salida a STDOUT, sino
que directamente
envía un header content-type/ text.
- Si mal no recuerdo, el timeout es controlable
- Para usar IE en Linux, recomiendo CrossOver Office
(http://www.codeweavers.com).
Funciona bien para ese propósito, y es
rápido
de instalar. Hay otra opción que no he utilizado,
Win4Lin
(www.netraverse.com), es más costoso pero
supuestamente con mayor
compatibilidad.
Vladimir
-- <FONT COLOR="009999"><I>Inter-Connect Web Design and Translations Diseño de Páginas de Internet y Traducciones www.inter-connect.us</I></font> -- PHP Spanish Localization Talk Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
This archive was generated by hypermail 2.1.7 : Wed Jan 26 2005 - 23:58:52 CET