de.comp.lang.php.* FAQ

25.17. Wie stelle ich Tabellenzeilen abwechselnd farbig dar?

Keywords: Tabelle | Zeile | Zelle | Farbe | Hintergrund

Antwort von Johannes Frömter

In 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 Koppensteiner

Besonders, 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.

Valid HTML 4.01! Valid CSS!

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