Avatar billede janorakel Nybegynder
18. oktober 2003 - 09:58 Der er 11 kommentarer og
1 løsning

CSV-data til download

Jeg har dette script, som laver et csv-udtræk af databasen.
Det laver udtrækket, men det skulle gerne kunne downloades.
Hvad skal indsættes i dette script for at det kan downloades så snart serveren er færdig med at generere formatet?
Avatar billede detox Nybegynder
18. oktober 2003 - 10:21 #1
Hvilket script?
Avatar billede janorakel Nybegynder
18. oktober 2003 - 10:26 #2
Ups Detox --> Jeg er stadig morgensøvnig. Her er det:

<?php

$sql = mysql_connect("localhost", "xxx", "xxx");
if ($sql)
{
if (mysql_select_db("book", $sql))
{
$fp = fopen("forfatterdata.csv", "wb");
if ($fp)
{
$result = mysql_query("SELECT * FROM second", $sql);
$num_fields = mysql_num_fields($result);
while ($row = mysql_fetch_array($result))
{
for ($t = 0; $t < $num_fields; $t++)
{
fputs($fp, $row[$t] . ($t < $num_fields - 1 ? "," : ""));
}
fputs($fp, "\r\n");
}
fclose($fp);
}
}
}
?>
Avatar billede jensgram Nybegynder
18. oktober 2003 - 10:32 #3
Er det ikke bare:

    Ups Detox --> Jeg er stadig morgensøvnig. Her er det:

<?php

$sql = mysql_connect("localhost", "xxx", "xxx");
if ($sql)
{
if (mysql_select_db("book", $sql))
{
$fp = fopen("forfatterdata.csv", "wb");
if ($fp)
{
$result = mysql_query("SELECT * FROM second", $sql);
$num_fields = mysql_num_fields($result);
while ($row = mysql_fetch_array($result))
{
for ($t = 0; $t < $num_fields; $t++)
{
fputs($fp, $row[$t] . ($t < $num_fields - 1 ? "," : ""));
}
fputs($fp, "\r\n");
}
fclose($fp);
}
}
}

header('location: forfatterdata.csv');
?>
Avatar billede janorakel Nybegynder
18. oktober 2003 - 10:38 #4
WOW, du er en haj - det virker.
Kan man med den slags filer gøre sådan at man vælger at de skal downloades?
Altså boksen med "open" "save" "cancel".
Jeg ved godt at man bare kan "save as".
Smid et svar!
Avatar billede janorakel Nybegynder
18. oktober 2003 - 10:41 #5
Altså, i stedet for at filen bare åbnes i excel eller gnumeric...
Avatar billede jensgram Nybegynder
18. oktober 2003 - 12:22 #6
Ja, du kan _forsøge_ at tvinge browseren (specielt IE har problemer med standarder) med:

header("Content-Type: application/x-msdownload");
header('location: forfatterdata.csv');


Hvis det ikke var for IE ville man bruge:

header("Content-Type: application/octet-stream");
header('location: forfatterdata.csv');

Smider lige et svar.
Avatar billede janorakel Nybegynder
18. oktober 2003 - 12:49 #7
Mange tak, men den åbner stadig det dokument i browseren.
Selv Firebird åbner den som visning i browseren.
Det må være scriptet..
Avatar billede jensgram Nybegynder
18. oktober 2003 - 13:07 #8
Hmm - det lyder da mystisk. Jeg synes da ellers, at jeg har haft held med det før.

Så prøv med (fundet i http://www.eksperten.dk/spm/256321)


header("Content-Disposition: attachment; filename=forfatterdata.csv");
header("Content-Type: application/octet-stream");
header("Content-Length: " . filesize('forfatterdata.csv'));
header("Pragma: no-cache");
header("Expires: 0");

$fp = fopen('forfatterdata.csv',"r");
print fread($fp, filesize('forfatterdata.csv'));
fclose($fp);
exit();
}
Avatar billede janorakel Nybegynder
18. oktober 2003 - 13:15 #9
Uden "}" virker det godt. Men den spørger om man ikke først vil downloade selve .php filen.. derefter .csv-filen.
Avatar billede janorakel Nybegynder
18. oktober 2003 - 13:24 #10
Jeg har en $fp længere oppe - jeg har omdøbt den til $fps
Og slettet:
header("Content-Length: " . filesize('forfatterdata.csv'));
Og det er stadigvæk som kl. 13:15:10
Avatar billede janorakel Nybegynder
18. oktober 2003 - 13:27 #11
Nej, jeg laver bare et link og fortæller folk at de skal højreklikke på det!
Mange tak for hjælpen..
Avatar billede jensgram Nybegynder
18. oktober 2003 - 20:28 #12
Så lidt - takker for points
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester