25.17. Wie stelle ich Tabellenzeilen abwechselnd farbig dar?Antwort von Johannes FrömterIn der folgenden Funktion bgcolor() kann man beliebig viele Farben im Array $col definieren, die bei jedem Aufruf der Reihe nach berücksichtigt werden. Optional kann die Funktion mit einem Integer-Wert aufgerufen werden (bgcolor(n)), um immer n aufeinander folgende Zeilen derselben Farbe zu erhalten.
function bgcolor($row = 1) {
static $i;
static $col = array('#FFDDDD',
'#DDFFDD',
'#DDDDFF'
); // etc.
$bg = $col[(int)($i + .00000001)];
$i += 1 / $row;
if ($i >= count($col)) $i = 0;
return $bg;
}
// Ausgabe einer Tabellenzeile (in einer Schleife):
printf("<tr bgcolor='%s'><td>...</td></tr>\n", bgcolor(2));
Antwort von Clemens KoppensteinerBesonders, wenn man die Zeilen sowieso mitzählt, kann man den gleichen Effekt leicht mittels des Modulo-Operators (%) und CSS erreichen.
printf("<tr class='row%s'><td>...</td></tr>\n", $line % 2);
Und im Stylesheet:
row0 {background-color:#FFDDDD}
row1 {background-color:#DDFFDD}
Zur Erklärung: Der Modulo-Operator gibt den Rest der Division der zwei Werte zurück. 13 % 5 ist also zum Beispiel gleich 3 (Mathematisch korrekt ausgedrückt: 13 ist kongruent 3 modulo 5). $line % 2 gibt also abwechselnd 0 und 1 zurück. |
||
| 25.17. Wie stelle ich Tabellenzeilen abwechselnd farbig dar? http://www.php-faq.de/q/q-code-tabellenfarbe.html |
||
| Archiv der de.comp.lang.php-FAQ Dies ist eine Archivseite von 2008 und wurde seitdem nicht geändert. Das dclp-FAQ-Team | ||