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

Ausgedruckt am: 29.03.2024 um 15:03 Uhr

Mitglied: StefanKittel
StefanKittel 15.05.2018 um 14:51:50 Uhr
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
Mitglied: majorkratze
majorkratze 15.05.2018 aktualisiert um 15:55:03 Uhr
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.
Mitglied: newit1
newit1 15.05.2018 um 15:38:50 Uhr
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...
Mitglied: majorkratze
majorkratze 15.05.2018 um 15:57:40 Uhr
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
Mitglied: newit1
newit1 15.05.2018 aktualisiert um 16:14:07 Uhr
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
Lösung 136166 15.05.2018 aktualisiert um 16:17:29 Uhr
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.
Mitglied: newit1
newit1 16.05.2018 um 09:08:11 Uhr
Goto Top
@readyplayerone

curl hat mir den gewünschten Erfolg gebracht!

Ich danke dir!