CSV Datei in Php als Tabelle ausgeben?

TheFamousSpy  28.12.2020, 20:03

Was klappt denn nicht wie gewünscht?

Fragesteller142 
Beitragsersteller
 28.12.2020, 20:07

Wenn man den Code ausführt, wird alles in einer Reihe ausgegeben, wie sortiere ich das Datum nach Quartalen, bzw wie gebe ich das schön aus, wie im Bild zu sehen?

Lg und danke!

3 Antworten

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>CSV Tabelle</title>
    <style>
      table, td, th {
        border: 1px solid #ddd;
        text-align: left;
      }


      table {
        border-collapse: collapse;
        width: 100%;
      }


      th, td {
        padding: 15px;
      }
    </style>
  </head>


  <body>
    <?php
      $csv = array_map('str_getcsv', file('data.csv'));
      echo '<table>
              <tr>';
      foreach ($csv[0] as $value) {
        echo '<th>'.$value.'</th>';
      }
      echo '</tr>';
      foreach (array_slice($csv, 1) as $line) {
        echo '<tr>';
        foreach ($line as $item) {
          echo '<td>'.$item.'</td>';
        }
        echo '</tr>';
      }
      echo '</table>';
    ?>
  </body>
</html>


Woher ich das weiß:Studium / Ausbildung – Informatikstudent

Fragesteller142 
Beitragsersteller
 28.12.2020, 20:54

Könntest du mir noch helfen, wie ich die Ganzen Produktgruppen in die 4 Quartale einteile? Habe mir Überlegt es mit einer Switch anweisung zu machen:

for($i = 0; $i < count($item); $i++){
        $artikel = $item[$i];
        
        switch($artikel){
            case "Tee":
                $tee[] = $artikel;
            break;
            
            case "Gewürze":
                $gewuerze[] = $artikel;
            break;
            
            case "Kerzen":
                $kerzen[] = $artikel;
            break;
            
            case "Geschenkkörbe":
                $geschenkkorbee[] = $artikel;
            break;
            
            case "Kosmetik":
                $kosmetik[] = $artikel;
            break;
            
            print $tee[$i];
            
        }
}

    Hab mir das so überlegt, geht aber leider nicht ganz..

Wie würdest es denn du machen?

Ohne irgendeinen Programmcode, kannst Du die Daten in entsprechende Gruppen aufteilen.

Dazu

Daten - Text in Spalten - getrennt - nach Komma.

Danach bekommst Du

  • Produkt
  • Datum
  • Umsatz

in jeweils einer Spalte angezeigt.

Danach kannst Du alles andere entsprechend selektieren usw.

Woher ich das weiß:eigene Erfahrung

Was dir auf jeden Fall fehlt sind gewisse HTML Tags.

Eine HTML-Tabelle hat folgende (einfache) Struktur:

<table>
<tr> /* das ist die erste Zeile */
<td></td> /* Zelle 1 der Zeile */
<td></td> /* Zelle 2 der Zeile */
</tr> /* das ist das Ende der ersten Zeile */
<tr> /* das ist die zweiten  Zeile */
<td></td> /* Zelle 1 der Zeile */
<td></td> /* Zelle 2 der Zeile */
</tr>/* das ist das Ende der zweiten Zeile */
</table>

Deswegen wird auch alles in einer Zeile ausgegeben statt in einzelnen Spalten.

Weiters hast du in der Variable $artikel immer alle Daten enthalten (Produktgruppe, Datum, Umsatz). Du musst aber die einzelnen Werte der Variable einzeln ausgeben, sonst kannst du es nicht in unterschiedliche Spalten schreiben

Also solltest du

$wert->umsatz

verwenden um den Umsatz auszugeben.

Mit den beiden Hinweisen solltest du deutlich weiter kommen. Wenn du noch mehr brauchst gib dann einfach Bescheid. Aktuell schreibe ich vom Handy und da kann man nicht alles im Detail erklären

Woher ich das weiß:Berufserfahrung – arbeite seit vielen Jahren in der IT

TheFamousSpy  28.12.2020, 20:27

Als Ergänzung:

zwischen <table> und dem ersten <tr> sollte man noch <th> setzen um den Spalten eine Überschrift zu geben.

regex9  28.12.2020, 21:01
@TheFamousSpy

Die th werden, wenn man sie braucht, ebenso innerhalb eines tr gesetzt.