Daten aus einer CSV Datei einlesen, formatieren und als Tabelle ausgeben.

  • Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Geissensepp

Neues Mitglied
10 September 2008
6
0
1
Hallo,
ich müßte aus einer *.csv Datei eine Tabelle erstellen. Das funktioniert auch schon grundsätzlich.
In der Tabelle gibt es 4 Spalten, wobei in jeder zweiten Zeile der csv die ersten 3 Spalten leer bleiben und in der vierten Spalte ist ein Text. Siehe Bild im Anhang. Jede zweite Zeile soll unterstrichen werden.
Soweit funktioniert es, nun aber möchte ich den Text in der dritten Spalte in einer anderen Farbe. Und da komme ich nicht weiter.
------------------------------------------------------------------------------------------
if($fileurl!="")
{
$file = fopen('images/'.$fileurl,"r");
echo '<table class="csvtable'.$moduleclass_sfx.'">';
echo '<style> tr:nth-child(even){border-bottom: 1px solid #cccccc; color: #ffff6d;} </style>';
if($i='2'){ echo '<style> color: #ff9933 </style>';}
echo '<tbody>';
while($f=fgetcsv($file))
{
echo '<tr>';
for($i=0;$i<count($f);$i++)
-----------------------------------------------------------------Das müßte hier passieren-------------------------
if($i=2) {echo'<style="color:#FF9933";></style>}
-----------------------------------------------------------------
{
echo '<td>'.$f[$i].'</td>';
}
echo '</tr>';
}
echo '</tbody>';
echo '</table>';
fclose($file);
}
------------------------------------------------------------------------------------------
Das müßte vermutlich passieren wenn der Schleifenzähler $i=2 ist. Ich bekomme aber nur eine weiße Seite oder einen Fehler.
Wäre sehr nett, wenn mir jemand helfen könnte.
LG
 

Anhänge

  • Bild1.jpg
    Bild1.jpg
    92,1 KB · Aufrufe: 9

m.scatello

Senior HTML'ler
15 Februar 2017
1.590
185
63
PHP:
if($i='2')
Das ist kein Vergleich, sondern eine Zuweisung.

Und dein erzeugter HTML-Code ist völlig kaputt!
 

Geissensepp

Neues Mitglied
10 September 2008
6
0
1
Sorry, hab ich übersehen (Ich seh schon den Wald vor lauter Bäumen nicht mehr!)
Aber so
if($i=='2') {echo'<style="color:#FF9933"></style>';}
funktionierts auch nicht. Die Schrift in Spalte 2 ist immer noch gleich.
 

Geissensepp

Neues Mitglied
10 September 2008
6
0
1
So kaputt kann er wieder nicht sein, denn im großen und ganzen funktioniert es ja. Ich hätte nur die 3. Spalte Schrift in einer anderen Farbe.
 

m.scatello

Senior HTML'ler
15 Februar 2017
1.590
185
63
So kaputt kann er wieder nicht sein, denn im großen und ganzen funktioniert es ja.
Doch ist er, allerdings sind die Browser in der Lage, selbst kaputten HTML-Code einigermaßen gut darzustellen.


PHP:
<!DOCTYPE html>
<html lang="de">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSV-Datei anzeigen</title>
    <style> 
      * { color: #000000; }
      table, td, tr {
         border: 1px solid #cccccc; 
         border-collapse: collapse;
      }
      td { padding: 4px; }
      td:nth-child(3) { color: red; }
   </style>
  </head>
  <body>
  <table>
<?php
    $fp = fopen("test.csv", "r");
    
    if ($fp)
    {
       while($data = fgetcsv($fp, 200, ";"))
       {
          echo "<tr>
                 <td>" . $data[0] . "</td>
                 <td>" . $data[1] . "</td>
                 <td>" . $data[2] . "</td>
                 <td>" . $data[3] . "</td>
                </tr>";
       }
    }
?>
  </table>
  </body>
</html>
 

sandreas

Mitglied
29 April 2009
39
6
8
Damit werden maximal 200 Zeichen pro Zeile gelsen. Man kann das aber auch auf 0 setzen.
Vielen Dank, das war mir bekannt... die 200 kamen mir nur willkürlich vor und ich wollte wissen, ob ich was überlesen hab :-)