Gingerbred: Tabelle mit abwechselnder Zeilenfarbe

Beitrag lesen

Hallo,

Beim vorliegenden Code wird nur die 1. und die 2. Zeile eingefärbt, danach farblos.

für abwechselne Zeilenfarben benutze :nth-child(), dem IE kannst du mit IE7 auf die Sprünge helfen.
Grundsätzlich solltest du dir aber um solche kleinen Schönheitsfehler bei alten Browsern keine großen Gedanken machen. Da Arbeit reinzustecken lohnt sich nicht, denn deine Besucher kommen nicht wegen der abwechselnden Zeilenfarbe, sondern wegen deiner Inhalte. Außerdem sorgst mit solcher Unterstützung bis ins allerkleine Detail nur für ein längeres Leben ausgerechnet jener Browser, die dir diese Zusatzarbeit aufzwingen.

Wenn ich <td> (statt <tr>) mit class='rowcol_$i % 2' definiere, werden die Kolonnen statt die Zeilen eingefärbt (auch nur 1. und 2. Kolonne).

$j=0;
while($row = mysql_fetch_row($result)){
echo "<tr class='rowcol_$j % 2'>";
for ($i=1; $i < mysql_num_fields($result); $i++){
echo "<td><div id='daten'>$row[$i]</div></td>";
}
echo "</tr>";
$j++;
}

  
Schau in den Quelltext, den der Browser bekommt, dort wirst du folgendes sehen:  
  
<tr class='rowcol\_0 % 2'>  
<tr class='rowcol\_1 % 2'>  
<tr class='rowcol\_2 % 2'>  
  
Ich rate dir dringlichst, die diversen PHP-Schlampereien wie in eine Zeichenkette eingebettete Variablen tunlichst zu umgehen. Hättest du von Anfang an sauber geschrieben, also "bla" . $dings . " und fasel" statt "bla$dings und fasel", wärest du sicher gar nicht erst auf die Idee gekommen, statt nur einer Variablen gleich eine ganze Formel in die Zeichenkette zu setzen. Dies geht nämlich nicht.  
Kurzum: Benutze "<tr class='rowcol\_" . ($j % 2) . "'>"