Export dat z db do CSV - bez FILE privileg. – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Export dat z db do CSV - bez FILE privileg. – PHP – Fórum – Programujte.comExport dat z db do CSV - bez FILE privileg. – PHP – Fórum – Programujte.com

 

ololol
~ Anonymní uživatel
28 příspěvků
31. 8. 2007   #1
-
0
-

Potřebuji aby mohl uživatel stahovat ze stránky vygenerovaný soubor CSV
a uložil si ho do svého adresáře.

Funkce SELECT s OUTFILE ukládá na server a tam nemám práva.

Našel jsem funkci fopen a fread ale moc tomu nerozumím.

Poradí někdo ?

Nahlásit jako SPAM
IP: ...–
štěpán
~ Anonymní uživatel
126 příspěvků
31. 8. 2007   #2
-
0
-

Můžeš vytvořit PHP skript, který bude CSV generovat. Typ výstupu nastavíš na text/plain a potom v cyklu projdeš kurzor, který bude generovat jednotlivé řádky. Uživatel si bude moci buď sobor "uloži jako..." přes pravé tlačítko myši nebo se mu vygeneruje obsah do prohlížeče (a ten uloží kam bude potřebovat).

Nahlásit jako SPAM
IP: ...–
ololol
~ Anonymní uživatel
28 příspěvků
31. 8. 2007   #3
-
0
-

Díky za odpověď,
to je jako výstup v hlavičce formuláře to text/plain, nebo kde se to nastavuje /asi v hlavičce souboru, že to sem nikdy nedělal/?

-pak mám ještě představu aby to hodilo uživateli hned tabulku o uložení i levým tlačítkem.
-ale spokojím se i s tím pravým Uložit jako

Nahlásit jako SPAM
IP: ...–
štěpán
~ Anonymní uživatel
126 příspěvků
31. 8. 2007   #4
-
0
-

Jedná se o nastavení content-type, kterým prohlížeči řeknete, jak příchozí obsah interpretovat (většinou text/html). Takto můžete například poslat i obsah, který se otevře v Excelu - ovšem to je samozřejmě závislé na tom, jestli má uživatel MS Office nainstalované. V PHP bohužel nedělám, takže na konkrétní funkci neodkážu :-) pokud však budete v dokumentaci (nebo na webu) hledat spojení content-type, tak to určitě naleznete.

Nahlásit jako SPAM
IP: ...–
insider0
Věrný člen
31. 8. 2007   #5
-
0
-

halvicky se posilaji pomoci

header("hlavicka");

ja si nepamatuju hlavicku, ktera je potreba pro prime stahovani souboru, ale mohlo by stacit presmerovani na soubor - melo by se otevrit okno pro stazeni:
header("Location: zaloha.csv");

Nahlásit jako SPAM
IP: ...–
I don't want to see you go,[br] The sky is over[br] Even though we can't afford[br] The sky is over,[br] The sky is over us.[br][br] CIVILIZATION IS OVER
Prog.0
Věrný člen
6. 9. 2007   #6
-
0
-

hlavička Content-type určuje o aký typ dát ide. Mal by si použiť text/csv a všetko by malo byť O.K. Často to však takto nefunguje. Keď browser zbadá Content-type: text/??? a ??? pritom nepozná, tak súbor zobrazí ako čistý text priamo vo svojom okne. Potom ti ostáva použiť hlavičku Content-type: application/octet-stream, ktorá [podtrzene]prinúti browser[/podtrzene] zobraziť okno s otázkou - čo so súborom (uložiť/otvoriť)?.

Vyskúšaj najprv text/csv (korektná hlavička pre csv súbor) a ak to nebude robiť čo chceš tak použi application/octet-stream.

<?php


function esc($str)
{
rerurn $str // *todo: ošetri reťazec v csv súbore
}

header("Content-type: text/csv"); // application/octet-stream
header("Content-Disposition: attachment; filename=\"nazov-suboru.csv\"");

$t = mysql_unbuffered_query("SELECT...");
while($l = MySQL_fetch_row($t)) echo implode(',',array_map('esc', $l))."\n";
MySQL_free_result($t);

?>

* fcia esc by mala zabezpečiť ošetrenie, keď hodnota obsahuje čiarku, resp. iné nebezpečné znaky
viď http://en.wikipedia.org/wiki/Comma-separated_values#Specification

EDIT: na českej wiki http://cs.wikipedia.org/wiki/CSV sa ohľadom Content-type piše:

Pro data ve formátu CSV je registrován MIME typ text/csv, v praxi se ale objevují i další typy jako application/csv, text/x-csv apod.

-- to že sa objavujú neznamená že ich máš používať.

Nahlásit jako SPAM
IP: ...–
Prog.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 30 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý