Mit php ausgegebene Zeilen einfärben

Also wie vielleicht manche wissen, hab ich ein Clanregister programmiert, dass ich aber immerwieder verbessere/erweitere.

Nun möchte ich wenn man auf “Clan-Liste” klickt, dort die ausgegebenen Zeilen automatisch eingefärbt werden. Beispiel: Zeile1=hellgrau, Zeile2=dunkelgrau, Zeile3=hellgrau, usw…

Das Script

[code]// DB Einträge laden
$abfrage = “SELECT * FROM cr_clans WHERE status LIKE ‘1’ ORDER BY name ASC LIMIT $start, $anzahl”;
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
// Tabellen-Zeilen ausgeben
echo ’

'.$html_land.' '.$neu.' '.$html_name.' '.$html_url.' '; }[/code]

Habt ihr dafür auf die schnelle eine simple Lösung?

lg

Dem tr ein class-Attribut verpassen, wobei mittels Modulo
jeweils einer von drei Klassennamen der Reihe nach ausgewählt
wird. Die jeweilige Klasse kannst du dann einfach per CSS
dekorieren.

Es gibt auch eine neue CSS3-Pseudoklasse nth-child, mit der geht
das auch nur mit CSS ohne explizite Angabe von class, was hier
eigentlich sinnvoll wäre. Ich weiß jetzt aber nicht, bei welchen
browsern das bereits implementiert ist.

[quote=“hoffmann”]Dem tr ein class-Attribut verpassen, wobei mittels Modulo
jeweils einer von drei Klassennamen der Reihe nach ausgewählt
wird. Die jeweilige Klasse kannst du dann einfach per CSS
dekorieren.[/quote]
Wie könnte soetwas aussehen im Script?

Zwei css-class sind klar, wie ich die in tr dann einfüge is mir auch klar, nur wie muss der php-schnipsel aussehen dass immer nach der Reihe gewählt wird?

Wäre vielleicht am besten wenn ich es mit einem array umsetzte oder?

Könntest du mir eventuell ein Beispiel geben/zeigen?

Du kannst die Namen der Klassen in ein array eintragen:

$klasse[0]=‘Zeilentyp0’;
$klasse[1]=‘Zeilentyp1’;
$klasse[2]=‘Zeilentyp2’;

Im Zweifelsfalle läßt du dann in der
while-Schleife einen Zähler laufen.
Davor:

$i=2;

In der Schleife sinngemäß:

$i=($i+1)%3;
$class=$klasse[$i];
echo “

”;

Wenn du Spaß dran hast, kannst du das dann auch noch
optimieren und einzeilig-kryptisch, aber effektiver gestalten.

Und eine “kryptische” Lösung für den Wechsel zwischen zwei verschiedenen Klassen:

<?php $array = array('wert','wert','wert','wert','wert','wert','wert','wert','wert','wert','wert','wert','wert','wert'); $alternate = false; foreach($array as $item) { $class = ($alternate = !$alternate) ? 'table_row' : 'table_row_alt'; echo "$class <br />\n"; } ?>

[quote=“progandy”]Und eine “kryptische” Lösung für den Wechsel zwischen zwei verschiedenen Klassen:

<?php $array = array('wert','wert','wert','wert','wert','wert','wert','wert','wert','wert','wert','wert','wert','wert'); $alternate = false; foreach($array as $item) { $class = ($alternate = !$alternate) ? 'table_row' : 'table_row_alt'; echo "$class <br />\n"; } ?>[/quote]

Vielen Dank funktioniert ohne probleme. ^^

Aber kann man das nicht iwie anders noch programmieren so in der Art z.B.:

$array = "1"; $alternate = false; foreach($array as $item) { $class = ($alternate = !$alternate) ? 'table_row' : 'table_row_alt'; echo "$class <br />\n";

Dann könnte man über den string $array die Anzahl defenieren, wie oft die beiden klassen ausgegeben werden, so könnte man sich dann dass ganze: “‘wert’,‘wert’,‘wert’,‘wert’,‘wert’,‘wert’,‘wert’,‘wert’,‘wert’,‘wert’,‘wert’,‘wert’,‘wert’,‘wert’” im Array sparen.

Also sprich dass ganze ohne Array.
Als ich geschrieben habe dass mit einem array zu lösen, war nur als ein Beispiel gedacht, aber wenn eine “zweite Version” mit einem String auch funktioniert, wäre es klasse.^^

Mein Beispiel funktioniert natürlich auch ohne array, wenn du
die Klassen durchnumerierst.
Kann man auch sehr einfach verallgemeinern auf eine beliebige
Anzahl von Farben:

Anzahl der Farben

$anz=3;

Beginn der Klassennamen, gibt dann Z0, Z1, Z2 …

$klasse=“Z”;

Begonnen wird dann mit der nächsten Klasse, so mit 0:

$i=$anz-1;

In der Schleife sinngemäß:

$i=($i+1)%$anz;
echo ‘

’;

[quote=“Ahrta5”]Aber kann man das nicht iwie anders noch programmieren so in der Art z.B.:
[…]
Dann könnte man über den string $array die Anzahl defenieren, wie oft die beiden klassen ausgegeben werden, so könnte man sich dann dass ganze: “‘wert’,‘wert’,‘wert’,‘wert’,‘wert’,‘wert’,‘wert’,‘wert’,‘wert’,‘wert’,‘wert’,‘wert’,‘wert’,‘wert’” im Array sparen.

Also sprich dass ganze ohne Array.
Als ich geschrieben habe dass mit einem array zu lösen, war nur als ein Beispiel gedacht, aber wenn eine “zweite Version” mit einem String auch funktioniert, wäre es klasse.^^[/quote]
Das Array und die Foreach-Schleife waren nur dazu gedacht, deine SQL-Abfrage und deine While-Schleife zu ersetzen :wink: Bei dir sähe das dann etwa so aus:

... $ergebnis = mysql_query($abfrage); $alternate = false; while($row = mysql_fetch_object($ergebnis)) { $class = ($alternate = !$alternate) ? 'table_row' : 'table_row_alt'; echo ... $class ... } ...

achso ok =)