Daten aus einer .csv Datei auslesen

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

  • Daten aus einer .csv Datei auslesen

    Hallo,

    ich habe gerade ein kleines Problem mit einem Script, dass Daten aus einer .csv Datei auslesen soll.
    Die Daten werden alle komplett gelesen, jedoch weiß ich nicht, wie ich es schaffen könnte, dass jeweils die erste Zeile fett geschrieben werden soll.

    Weiß jemand eine Lösung?

    PHP-Code:
    <?php
    $csvFile 
    "data.csv";
    $fileArray file($csvFile);

    $array1 explode(";",$fileArray[0]);
    $maxrows count($array1);

    echo 
    "<table>\n";
     
    foreach (
    $fileArray as $zeile)
    {
        for(
    $a=0$a<$maxrows$a++){
            
            
    $array3 explode(";",$zeile); 
            echo 
    "<td>".$array3[$a]."</td></tr>\n";    
            }  
        
    }   
    echo 
    "</table>";  

    ?>
    Danke für eure Hilfe!

  • #2
    if($=0)
    // th verwenden statt td

    Kommentar


    • #3
      wenn ich die schleife mit if($a=0) einbaue, dann wird die erste Spalte fettgedruckt, aber nicht die erste zeile

      Kommentar


      • #4
        Code:
        $ersteZeile = true;
        schleife(...) {
           if($ersteZeile) {
             // code für fette Schrift (CSS-Klasse o.ä.)
           }
           // weitere Verarbeitung
           $ersteZeile = false;
        }
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Habs mal geändert, allerdings werden immer nur noch alle Inhalte der Spalte A fett gedruckt, nicht aber die erste Zeile!

          PHP-Code:
          <?php
          $csvFile 
          "data.csv";
          $fileArray file($csvFile);

          $array1 explode(";",$fileArray[0]);
          $maxrows count($array1);

          echo 
          "<table>\n";
           
          foreach (
          $fileArray as $zeile)
          {
          $erstezeile true;    
              for(
          $a=0$a<$maxrows$a++){
                  
                  if (
          $erstezeile == true){
                      
          $array3 explode(";",$zeile); 
                  echo 
          "<td><b>".$array3[$a]."</b></td></tr>\n";    
                  }else{
                  
          $array3 explode(";",$zeile); 
                  echo 
          "<td>".$array3[$a]."</td></tr>\n";    
                  } 
          $erstezeile false;
              }
              
          }   
          echo 
          "</table>";  

          ?>

          Kommentar


          • #6
            Original geschrieben von Sichtbarer
            Habs mal geändert, allerdings werden immer nur noch alle Inhalte der Spalte A fett gedruckt, nicht aber die erste Zeile!
            Ja, weil du's an der falschen Stelle eingebaut hast.

            Du setzt dieses Flag jetzt bei der Bearbeitung jeder Zeile erneut auf true - und fragst es dann beim Ausgaben der Spalten ab.
            Du solltest es aber schon vorher initialisieren, und dann vor der Ausgabe der ersten Zeile abfragen.


            Btw: Wieso sehe ich dich eigentlich überhaupt keine öffnenden <tr>-Tags ausgeben ...?
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Habe es hinbekommen. Dankeschön für die schnelle Hilfe!

              Für alle, die wissen wollen wie es funktioniert:
              PHP-Code:
              <?php
              $csvFile 
              "data.csv";
              $fileArray file($csvFile);

              $array1 explode(";",$fileArray[0]);
              $maxrows count($array1);

              echo 
              "<table>\n";
              $erstezeile true;
              foreach (
              $fileArray as $zeile)


                  for(
              $a=0$a<$maxrows$a++){
                              
                      if (
              $erstezeile){
                          
                          
              $array3 explode(";",$zeile); 
                      echo 
              "<td><b>".$array3[$a]."</b></td></tr>\n";    
                      
              $erstezeile true;
                      }else{
                      
              $array3 explode(";",$zeile); 
                      echo 
              "<td>".$array3[$a]."</td></tr>\n";    
                      }

                  }
                  
              $erstezeile false;
                  
              }   
              echo 
              "</table>";  

              ?>

              Kommentar


              • #8
                Irgendwie hast du das schwer was durcheinander gebracht. Du liest die erste Zeile des CSV-Files ins Array $array1 und glaubst dann, dass $maxrows = count($array1) wäre. Das stimmt aber nur, wenn die erste Zeile maximal soviele Spalten hat, wie es Zeilen in der Datei gibt. Garantiert falsch.

                Hier mal eine etwas schlüssigere Version, wobei ich natürlich den Inhalt deiner CSV nicht kenne und man schon Pferde kotzen sah ...
                PHP-Code:
                <?php
                $file 
                file('data.csv');

                // als Demo, wird nicht benutzt
                $rows count($file)-1;

                echo 
                "<table>\n<tr>\n<th>\n";
                echo 
                implode("</th>\n<th>"explode(';',$file[0]));
                echo 
                "</th>\n</tr>\n";

                unset(
                $file[0]);
                foreach (
                $file as $zeile) { 
                    echo 
                '<tr><td>'.implode('</td><td>'explode(';',$zeile))."</td></tr>\n";
                }   
                echo 
                "</table>\n";
                ?>
                So, und nun kannst du dir selbst Gedanken machen, ob fgetcsv() hier nicht angebracht wäre und was passiert, wenn die CSV gar nicht vorhanden ist.

                Kommentar

                Lädt...
                X