Avatar billede morten_21 Nybegynder
22. april 2010 - 19:40 Der er 9 kommentarer

Hente tekstfil og indsætte den i mysql db

Hej Eksperter.

Jeg vil gerne gemme indholdet af en tekstfil på et andet domæne, og gemme den i min mysql database. De to tables har ens felter.

Tekstfilen indeholder en eksport af en mssql database, og jeg henter ID, adresse, medlemsnr, og tlfnr. ud. Outputtet ser sådan ud (ren tekst):

1
adresse1
medlemsnr1
tlfnr1
2
adresse2
medlemsnr2
tlfnr2
3
adresse3
medlemsnr3
tlfnr3

osv. osv.

Jeg kan bestemme hvordan outputtet skal være på tekstfilen, men jeg har valgt at lave linjeskift (<br>), da felterne kan indeholde komma, og så dur det ikke som seperator.

Jeg henter filens indhold med file_get_contents() og har eksperimenteret med at explode det i et array, men det hele bliver rodet sammen.

Er nogen friske på et kodeeksempel?
Avatar billede michael_stim Ekspert
22. april 2010 - 20:28 #1
Har du prøvet med \n eller \r\n?

explode("\n",$text);
explode("\r\n",$text);
Avatar billede michael_stim Ekspert
22. april 2010 - 20:32 #2
Og tænk på at det også kan være:

<BR>
<BR />
<br />

osv.
Avatar billede majbom Novice
22. april 2010 - 20:58 #3
du kan jo prøve at udskrive indholdet af tekstfilen, så du kan se hvad præcist der står som separator...
Avatar billede morten_21 Nybegynder
22. april 2010 - 22:06 #4
Splazz - som sagt kan jeg selv bestemme hvordan outputtet skal være, og jeg har sat <BR> som seperator. Jeg kan bare ikke finde ud af, hvordan min explode løkke skal være, og hvordan jeg får gemt alt i databasen i de rette felter.

Det eneste jeg har nu, er:

$data = file_get_contents('test.asp');

$x = (explode("<BR>",$data));

foreach ($x as $value)
  {
  echo $value . "<br />";
 
  }
Avatar billede morten_21 Nybegynder
22. april 2010 - 23:49 #5
Har rodet lidt og dette virker næsten.

$indhold = file_get_contents('fil.asp');

// Outputtet af $indhold er:
//navn1#adresse1#medlemsnr#navn2#adresse2#medlemsnummer2#


$x = (explode("#",$indhold));

foreach ($x as $value)
  {
 
  list($a, $b, $c) = $x;
  echo "Navn: ".$a . "<br />";
  echo "adresse: ".$b . "<br />";
  echo "medlemsnr: ".$c . "<br /> ";
  }

Outputtet er
Navn: jens
adresse: gadevej
medlemsnr: 1
Navn: jens
adresse: gadevej
medlemsnr: 1
Navn: jens
adresse: gadevej
medlemsnr: 1
Navn: jens
adresse: gadevej
medlemsnr: 1
..og sådan fortsætter det.

Der er noget med den foreach løkke jeg slet ikke har styr på.. :-(
Avatar billede coderdk Praktikant
23. april 2010 - 04:22 #6
Brug enten fgetcsv eller explode på \r?\n først ;)
fgetcsv er lavet til dét der.
Avatar billede majbom Novice
23. april 2010 - 08:15 #7
kan du ikke lave en anden separator mellem dine rows, så den ikke er den samme separator som mellem dine felter?
Avatar billede coderdk Praktikant
23. april 2010 - 16:26 #8
$fp = fopen( "fil.asp", "r" );
while ( $row = fgetcsv( $fp, 2048, "#" ) )
{
  echo "Navn: $row[0]<br>Adresse: $row[1]<br>Medlemsnr: $row[2]<br>";
}
fclose( $fp );
Avatar billede majbom Novice
04. november 2010 - 13:37 #9
kom du videre?
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