kostenloser Webspace werbefrei: lima-city


CSV-Dateien: Verschiedene zeilen einlesen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    nacave

    nacave hat kostenlosen Webspace.

    hi, ich wollt mal wissen, wie man bei csv-dateien zb. nur die 2. zeile einlesen kann....
    Ich lese csv-dateien immer so ein:

    $file=fopen("datei.csv", "r");
    	$filesize=filesize("datei.csv");
    	$out=fgetcsv($file, $filesize, ";");
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. $file = file(_Pfad_);


    Dies lädt die Datei in ein Array und mann kan via $file['1'] auf Zeile 2 zugreifen (Das Array geht bei 0 los, somit ist Zeile 1 im Array 0).
  4. Das ist so nicht möglich! PHP weiß ja nicht wo die zweite Zeile beginnt, demzufolge muß PHP immer erst die 1. Zeile einlesen ;-)
    Es sei denn deine 1. Zeile hat IMMER eine feste Größe, dann könnte man mittels fseek() an die Position springen und nur die zweite Zeile einlesen.

    Aber wenn du magst kannst du ja nur bis zu der gewünschten Zeile lesen. Das geht dann so:
    <?php
    
    $row = 2;                                      // Anzahl der Zeilen
    $handle = fopen ("test.csv","r");              // Datei zum Lesen öffnen
    $filesize = filesize("test.csv");
    
    // jede Zeile einlesen
    for( $i=0; $i<$row; $i++ ) { 
        // pruefen ob Zeile = gesuchte und Fehler auftrat
        if ((($data = fgetcsv ($handle, $filesize, ",")) !== FALSE) && ($row == $i+1)) {
    
            $num = count ($data);                      // Felder im Array $data
            for ($c=0; $c < $num; $c++) {              // FOR-Schleife, um Felder 
                print $data[$c] . "<br>\n";            // des Arrays auszugeben
            }
            
        }
    }
    fclose ($handle);
    ?>


    Edit: @strange: ich glaube er möchte nicht die gesamte Datei einlesen nur um die zweite Zeile zu haben, ansonsten ok

    Grüßle

    Beitrag zuletzt geändert: 4.5.2009 21:17:47 von scout
  5. Mit Deiner Methode wird auch immer die ganze Datei eingelesen, somit ist egal wie man es macht. So lange es sich nur um ein paar KiB handelt ist es auch egal, erst wenn die Datenmenge zu groß wird braucht man eine andere Methode.
  6. strange schrieb: Mit Deiner Methode wird auch immer die ganze Datei eingelesen, somit ist egal wie man es macht. So lange es sich nur um ein paar KiB handelt ist es auch egal, erst wenn die Datenmenge zu groß wird braucht man eine andere Methode.


    Dem dürfte nicht so sein, denn fgetcsv() liest zeilenweise ;-)

    Grüßle

    PS: allerdings war meine Bedingung nicht ganz korrekt -> ($row == $i+1) muß ans Ende -> oben korrigiert
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!