newit1
Goto Top

PHP Hilfe bei csv

Hallo,

habe den unterstehenden Code:
Funktioniert auch, allerdings importiere ich die CSV danach über ein Skript in eine Datenbank.
Dabei bekomme ich leider dann nur die erste Zeile der CSV importiert.
Woran kann dies liegen?

Der Aufbau der CSV ist:
1;Mustermann;Max;04.05.20172; Müller; Thomas;06.05.2018



<?php

  $extern_url = "http://beispiel/ldap/beispiel.csv";  
  $local_file = "beispiel.csv";  
      $fpread = @fopen($extern_url, 'r');  

 if(!$fpread)
  { 
        echo "Webseite zurzeit nicht erreichbar." ;  
        exit; 
  } 

   else { 

        $fpwrite = @fopen($local_file, 'w');   
        if(!$fpwrite)
        { 
            echo "$errstr ($errno)<br> n";   
            exit; 
        } else { 
            while(! feof($fpread) )
            { 
                $buffer = @ltrim(Chop(fgets($fpread, 256)))."n";   
        fputs($fpwrite, $buffer); 
      }
         @fclose($fpread); 
      } 
      @fclose($fpwrite); 
  }  


?>

Content-Key: 373938

Url: https://administrator.de/contentid/373938

Printed on: April 16, 2024 at 17:04 o'clock

Member: StefanKittel
StefanKittel May 15, 2018 at 12:51:50 (UTC)
Goto Top
Hallo,

ich würde file_get_contents und explode verwenden.
Braucht allerdings mehr Speicher.

Stefan

http://php.net/file_get_contents
http://php.net/manual/de/function.explode.php
Member: majorkratze
majorkratze May 15, 2018 updated at 13:55:03 (UTC)
Goto Top
Hi,

in der Zeile 5 liest du ja den Inhalt der CSV die du über eine URL übergibst.
Nun ist der gesamte Inhalt in einem Array in der Variable.

Daher muss du bei der Ausgabe auch durch das Array iterieren. Dafür brauchst du eine Schleife.

<?php
$extern_url = "http://beispiel/ldap/beispiel.csv";  
$local_file = "beispiel.csv";   
$myfile = fopen($extern_url, "r") or die("Webseite zurzeit nicht erreichbar.");  
// Output one line until end-of-file
while(!feof($myfile)) {
  echo fgets($myfile) . "<br>";  
  $fpwrite = @fopen($local_file, 'w');  
   fwrite($fpwrite, fgets($myfile));
}
fclose($fpwrite);
fclose($myfile);
?>

Probier das mal aus, habe ich jetzt nicht komplett getestet aber sollte so in etwa funktionieren.
Member: newit1
newit1 May 15, 2018 at 13:38:50 (UTC)
Goto Top
@majorkratze

Vielen Dank erst mal, es hat bei mir funktioniert!
Allerdings bekomme ich die CSV jetzt in der Kommandozeile angezeigt ;)
Er soll diese ja in die Datei "beispiel.csv" schreiben...diese wird dann über ein anderes Skript ja in die Datenbank importiert...
Member: majorkratze
majorkratze May 15, 2018 at 13:57:40 (UTC)
Goto Top
Hi, ich habe den code nochmal aktualisiert. Es fehlte das schreiben in die lokale CSV. Anstatt ein extra script für den datenbank import zu schreiben kannst du auch alles direkt in der Schleife erledigen
Member: newit1
newit1 May 15, 2018 updated at 14:14:07 (UTC)
Goto Top
Hi, ja danke für den Tipp

Hast du den aktualisierten Code selbst bei dir mal getestet?
Die "beispiel.csv" wird zwar erstellt aber leider wieder ohne Inhalt.
Im Moment kann ich es mir noch nicht erklären warum?
Mitglied: 136166
Solution 136166 May 15, 2018 updated at 14:17:29 (UTC)
Goto Top
Warum umständlich wenn es einfach geht ... face-smile
file_put_contents("beispiel.csv", file_get_contents("http://beispiel/ldap/beispiel.csv"));  
Oder eben direkt mit curl.
Member: newit1
newit1 May 16, 2018 at 07:08:11 (UTC)
Goto Top
@readyplayerone

curl hat mir den gewünschten Erfolg gebracht!

Ich danke dir!