23. februar 2007 - 08:06Der er
24 kommentarer og 1 løsning
Hent MySQl og gem i komma-fil
Hej. Jeg har brug for at hente nogle poster i en Mysql-fil, og gemme dem i en komma-sepereret fil til brug i et økonomisystem. Nogle der har forslag til dels udtrækket, hvordan det gemmes som en komma-fil??
Tak for dit udmærkede eksempel, hvor du giver flere eksempler på, hvordan $str kan sættes. Men jeg har ikke formuleret mig tydeligt nok - beklager. Din løsning viser hvordan man gemmer en tekst-fil på serveren. Kan du nemt vise, hvordan man gør, hvis den skal gemmes på den lokale PC - altså hvor der popper en dialogboks op, hvorfra man kan gemme. Skal der ikke sættes et komma mellem hvert felt, og hvad skal sættes mellem hver post? Og endelig, hvis der er et komma som feltindhold i et af felterne, skal det så ændres til et "special karakter".
Om filen kan downloades direkte afhænger af browser/server opsætning, du kan gøre det på 2 måder.
1:du kan bare lave et link til filen <a href=dintekst.txt>blabla</A>
2: Du kan i starten af dit script lave en header("location:dintekst.txt");
du bestemme er selv hvad der skal stå mellem posterne. Hvis der er komme i feltindholdet er det nok en god ide at ændre disse til specialkarakter eller indkapsle posterne f.x.
Tak for dine forslag med link og header. Link funktionen er jeg ked af, og Header er jeg ikke med på. Der må da være en funktion, som gør at man kan gemme filen lokalt. Jeg har bla. en backupfil, som tager dump af alle MySQL tabeller. Når jeg klikker på denne fil, popper den op med en "gem-funktion". Jeg kan bare ikke gennemskue denne fil. Den ligger i øvrigt her: www.vardeborg.dk/backup2.phps
Denne fejl kommer 4 gange: Warning: Cannot modify header information - headers already sent by (output started at /usr/home/web/web109972/kalendertest/head.php:22) in /usr/home/web/web109972/kalendertest/gem_komma.php on line 6
Header delen skal være før alt andet: <? header("Content-disposition: filename=ditfilnavnher.txt"); header("Content-type: application/ms-download"); header("Pragma: no-cache"); header("Expires: 0");
require 'head.php';
$query = mysql_query("SELECT * FROM kalender_aftale"); $file = "dintekst.txt";
Nu skriver jeg sådan her: den gemmer fortsat på serveren. Og forslaget med $seminkolon er jeg ikke helt med på. Har prøvet, men txt-filen er tom. <? header('Content-Type: application/octet-stream'); header('Content-Size: '.filesize('test.txt')); header('Content-Disposition: attachment; filename=test.txt');
require 'head.php';
$query = mysql_query("SELECT * FROM kalender_aftale"); $file = "test.txt";
Nu nærmer vi os, da jeg nu får gem-dialogboksen frem, men jeg får fejl, når jeg vælger "Gem". IE kan ikke indlæse gem_komma.php fra www.vardeborg.dk IE kunne ikke åbne dette internetsted. Det anmodede sted er enten ikke tilgængelig eller kan ikke findes.
Det gør jeg heller ikke. Filen ser sådan her ud nu: <? header('Content-Type: application/octet-stream'); header('Content-Size: '.filesize('test.txt')); header('Content-Disposition: attachment; filename=test.txt');
require 'head.php';
$query = mysql_query("SELECT * FROM kalender_aftale"); $file = "test.txt";
Jeg har nu prøvet nøjagtigt som ovenfor. Gem-vinduet popper ikke op, men posterne vises på skærmen. En af de andre skrev, at header skulle lige øverst??
Her har jeg flyttet header op. Så kommen den godt nok med Gem-vinduet, men det er stadig "gem_komma.php den prøver at gemme, hvilket heller ikke lykedes.
<? // Sørg for at der ikke skrives fejl ud ini_set('display_errors', 0);
Fejlen fundet. Kaldet "require 'head.php';" henter mysql koder m.m., men der har ligget noget andet svavs, som har forstyret. Beklager. Jeg fordeler pointene - sender I lige et svar.
while ($row = mysql_fetch_assoc($query)) { $semikolon .= implode(';', $row)."\n"; }
Hvad var meningen?
Synes godt om
Ny brugerNybegynder
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.