bestimmte Zeilen einer CSV auslesen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • bestimmte Zeilen einer CSV auslesen

    Hallo, bin neu auf diesem Gebiet und hoffe auf Eure Hilfe. Ich habe eine csv-Datei mit mehreren Zeilen und Spalten (getrennt mit semikolon) und möchte gern, dass ich per PHP die ersten 3 Zeilen auslesen kann und daraus nur die ersten 2 Spalten. Wie ich die komplette Datei auslesen kann und dass mir daraus einzelne Spalten angezeigt bekomme ist mir bekannt, Ich möchte aber nur die ersten 3 Zeilen nd daraus die ersten 2 Spalten angezeigt bekommen. Ich weiss auch, dass man dazu irgenteine Schleife basteln kann, aber nicht wie das geht. Da bin ich nicht so bewandert und das durchlesen von den Befehlen verstehe ich auch noch nicht richtig. Könnte mir jemand meinen PHP-Code so erweitern, dass das so funktioniert wie ich es haben möchte?

    <?php
    $handle = fopen('news.csv', 'r');
    while ($data = fgetcsv($handle, 30000, ';'))
    {
    echo "$data[0]<br>$data[1]\n";
    }
    fclose($handle);
    ?>

  • #2
    Wenn Du
    1. immer nur die ersten 3 zeilen einlesen möchtest und
    2. immer sicher sein kannst, das mind. 3 zeilen in der datei stehen

    dann brauchst du nicht die ganze datei einlesen sondern nur 3 Zeilen

    Beispiel:
    if (file_exists($PfadDatei)) {
    $Datei = fopen($PfadDatei,"r");
    $Zeile1 = fgets($Datei,9999);
    $Zeile2 = fgets($Datei,9999);
    $Zeile3 = fgets($Datei,9999);
    fclose($Datei);
    }

    Damit würdest Du dann in den Variablen Zeile1 bis zeile 3 die ersten 3 Zeilen der CSV datei haben.

    um an die gewünschten Spalten zu kommen wende dann die String-Funktion: "explode" an.

    ich hoffe das reicht als Erklärung.

    Kommentar


    • #3
      Original geschrieben von Stub
      Wenn Du
      1. immer nur die ersten 3 zeilen einlesen möchtest und
      2. immer sicher sein kannst, das mind. 3 zeilen in der datei stehen

      dann brauchst du nicht die ganze datei einlesen sondern nur 3 Zeilen

      Beispiel:
      if (file_exists($PfadDatei)) {
      $Datei = fopen($PfadDatei,"r");
      $Zeile1 = fgets($Datei,9999);
      $Zeile2 = fgets($Datei,9999);
      $Zeile3 = fgets($Datei,9999);
      fclose($Datei);
      }

      Damit würdest Du dann in den Variablen Zeile1 bis zeile 3 die ersten 3 Zeilen der CSV datei haben.

      um an die gewünschten Spalten zu kommen wende dann die String-Funktion: "explode" an.

      ich hoffe das reicht als Erklärung.

      Ja, das hat mir sehr weitergeholfen. Obwohl ich erstmal garnicht wusste, was du meinst. Es funktioniert jetzt mit nem bischen nachlesen. Für alle die es interessiert hier der komplette Code:

      <?php

      if (file_exists('../news/news.csv')) {
      $Datei = fopen('../news/news.csv','r');
      $Zeile1 = fgets($Datei,9999);
      $Zeile2 = fgets($Datei,9999);
      $Zeile3 = fgets($Datei,9999);
      $array1 = explode(";",$Zeile1);
      $array2 = explode(";",$Zeile2);
      $array3 = explode(";",$Zeile3);
      fclose($Datei);
      }

      echo $array1[0]."<br>".$array1[1]."<br><br>";
      echo $array2[0]."<br>".$array2[1]."<br><br>";
      echo $array3[0]."<br>".$array3[1]."<br><br>";

      ?>

      Vielen Dank nochmal!

      Kommentar


      • #4
        So im Stil: Von hinten durch die Brust ins Auge. Du warst ja mit deiner eigenen Lösung viel näher dran:
        PHP-Code:
        <?php
        $handle 
        fopen('news.csv''r');
        $i 0;
        while (
        $data fgetcsv($handle30000';') && $i 3){
            echo 
        "$data[0]<br />$data[1]<br />\n";
            
        $i ++;
        }
        fclose($handle);
        ?>
        Gruss
        H2O

        Kommentar


        • #5
          Original geschrieben von H2O
          So im Stil: Von hinten durch die Brust ins Auge. Du warst ja mit deiner eigenen Lösung viel näher dran:
          PHP-Code:
          <?php
          $handle 
          fopen('news.csv''r');
          $i 0;
          while (
          $data fgetcsv($handle30000';') && $i 3){
              echo 
          "$data[0]<br />$data[1]<br />\n";
              
          $i ++;
          }
          fclose($handle);
          ?>
          Geht nicht. Zeigt nur:

          <br /><br />
          <br /><br />
          <br /><br />

          also ohne Daten.

          Kommentar


          • #6
            Dann zeig mal die ersten paar Zeilen deiner "news.csv".
            Und "<br />" wird sicher nicht so angezeigt, ausser du startest PHP von der Command-Line.
            Gruss
            H2O

            Kommentar


            • #7
              Original geschrieben von H2O
              Dann zeig mal die ersten paar Zeilen deiner "news.csv".
              Und "<br />" wird sicher nicht so angezeigt, ausser du startest PHP von der Command-Line.

              Das ist die news.csv:

              20.08.2008;test1;test2;sgdsadgdsga
              22.09.2008;test3;test4;aghtrhhdfh
              20.10.2008;test5;test6;sadhshhh
              22.11.2008;test7;test8;sahdghsh
              20.12.2008;test9;test10;adddgsdsd
              22.01.2009;test11;test12;sdadfdga dgdgg

              und

              <br /><br />
              <br /><br />
              <br /><br />

              sehe ich dann im quelltext.

              Kommentar


              • #8
                while ($data = fgetcsv($handle, 30000, ';') && $i < 3){
                muss:
                while (($data = fgetcsv($handle, 30000, ';')) && $i < 3){
                heissen
                Beantworte nie Threads mit mehr als 15 followups...
                Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                Kommentar


                • #9
                  Original geschrieben von MelloPie
                  while ($data = fgetcsv($handle, 30000, ';') && $i < 3){
                  muss:
                  while (($data = fgetcsv($handle, 30000, ';')) && $i < 3){
                  heissen
                  Ahhhh, jetzt funktioniert es. Danke!

                  Kommentar

                  Lädt...
                  X