Jede zweite Zeile in einer anderen Farbe

Memfis

Erfahrenes Mitglied
Suchfunktion findet (seltsamerweise) nichts zu dem Thema.

Ich habe eine mehr oder weniger große Tabelle geschaffen und möchte nun, dass mir jede zweite Zeile in einer anderen Farbe dargestellt wird. Die Ausgabe sieht wie folgt aus, falls das von Bedeutung ist:
PHP:
<?php
... Datenbankverbindung, Auslesebefehl ...
?>
<table>
<tr><td>Spaltenüberschrift 1</td><td>Spaltenüberschrift 2</td><td>Spaltenüberschrift 3</td><td>Spaltenüberschrift 4</td></tr>
<?php
while ($gefunden = mysql_fetch_row($ergebnis)){
?>
<tr><td><?php echo $gefunden[1] ?></td><td><?php echo $gefunden[2] ?></td><td><?php echo $gefunden[3] ?></td><td><?php echo $gefunden[4]?></td></tr>
<?php
}
?>
</table>
Hoffe ich habe den Quelltext jetzt nicht zu sehr gekürzt. Habe Formatierungskrempel (font, size, etc.) entfernt, da er hier ohne Bedeutung ist und die Übersicht so besser ist *hoff*.
 
Zuletzt bearbeitet:
Re: Jede zeite Zeile in einer anderen Farbe

Also, ich hatte das so gelöst:
Code:
for ($i=1; $i<= mysql_num_rows($query); $i++) {
	 
     $row = mysql_fetch_array($query);
     if ($i % 2 != 0) { $zeile='ungerade'; } //per %-Operator auf Rest nach Division überprüfen
     else { $zeile='gerade'; }
		
     echo ''; //Zeilenausgabe
		
     if ($i < mysql_num_rows($query)) { echo ''; } //Falls nicht letzter Eintrag Zwischenzeile (Spacer) setzen
}
 
Oder auch:
PHP:
<?php

	$i = 0;
	while( $gefunden = mysql_fetch_row($ergebnis) ) {

		echo sprintf(
			'<tr class="%s"><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>',
				($i++%2==0) ? 'gerade' : 'ungerade',
				$gefunden[1],
				$gefunden[2],
				$gefunden[3],
				$gefunden[4]
			);

	}

?>
 
Öhm, ich habe versucht dein Script nachzuvollziehen, stolperte aber über folgende Dinge:

1) Wo ist die Farbdefinition, wo steht, welche Farbe gesetzt werden soll, wenn was der Fall ist?
2) Diese Zeile ist für mich ein ganz großes Fragezeichen: '<tr class="%s"><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>',
3) Was 'gerade' : 'ungerade', soll, überlege ich auch noch, weil das nirgends sonnst auftaucht, also nirgends definiert wurde.

Gruß Memfis
 
Zuletzt bearbeitet:
1) Das steht nirgendwo.
Gumbo hat classes benutzt, nämlich die class "gerade" für die eine Farbe und "ungerade" für die andere. Diese definierst du in deiner CSS-Datei oder im Head-Bereich der Seite.

2) Diese Zeile kannst du als Template für die Ausgabe sehen. Jedes "%s" wird später durch einen Wert ersetzt, der ebenso in der Funktion sprintf angegeben ist.
Da er fünf "%s" hat, braucht er auch fünf Werte:
($i++%2==0) ? 'gerade' : 'ungerade'
$gefunden[1]
$gefunden[2]
$gefunden[3]
$gefunden[4]

In der ersten Zeile wird geprüft, ob "$i", also die Zahl des aktuellen Durchlaufs, modulo 2 = 0 ist.
Die anderen Zeilen sind einfach nur Daten aus der Datenbank und zwar die Daten mit den Keys 1-4.

Cu Paraman
 
Danke für die Erklärung. Geht das aber auch einfacher. CSS kann ich (noch) nicht und ich mache eigentlich alles gerne in PHP und HTML.
 
PHP:
<?php

	$i = 0;
	while( $gefunden = mysql_fetch_row($ergebnis) ) {

		echo sprintf(
			'<tr style="background-color: %s"><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>',
				($i++%2==0) ? '#AAAAAA' : '#CCCCCC',
				$gefunden[1],
				$gefunden[2],
				$gefunden[3],
				$gefunden[4]
			);

	}

?>

Cu Paraman
 
Geht das aber auch einfacher. CSS kann ich (noch) nicht und ich mache eigentlich alles gerne in PHP und HTML.
CSS ist nun wirklich nicht schwer. Wenn du dich erst einmal etwas eingearbeitet hast, wirst du merken, welches Potenzial hinter CSS steckt.
Übrigens verwendet auch Paramans Vorschlag CSS.
 
Danke. Funktioniert. Hab jetzt aber trotzdem noch eine Frage *sorry*

Wofür steht "%s"?
 
Zuletzt bearbeitet:
Zurück