Tabellen in abwechselnden Farben

Um das ganze mit CSS noch ein bischen herauszustreichen:

Am einfachsten ist es eine Css-klasse odd zu definieren die du bei jeder zweiten Zeile setzt:
HTML:
<tr class="odd">

dann kannst du im CSS folgendes deffinieren:
CSS:
table > tr, table > tbody > tr{
    background-color: blue;
}
table > tr.odd, table > tbody > tr.odd{
    background-color: red;
}

Und du hasst mit weniger Code mehr Flexibilität und musst weniger übertragen.
 
A - Na, da haste nen alten Thread ausgegraben.
B - Design und Inhalt trennen. CSS benutzen.
C - Warum dieser Code nicht funktioniert.. Hmm. Ich schau ihn mir nicht mal an, irgendwie wirr. Du bist doch schon in der While-Schleife, also bau Dir einen einfachen Schalter
PHP:
// ab in die schleife damit
$colchange++;
// modulo ob gerade oder ungerade
if($colchange % 2)
{$color="#666";}
else
{$color="#999";}

echo $color;
(Vorsicht, nicht getestet, einfach hingekliert..)

mfg chmee

Leider funktioniert das nicht!
 
Was hast du denn daraus gemacht?

Das war ja nur als grobe Anleitung/Idee gedacht, genau so wird es nicht funktionieren.
 
Ich bin hat nur purer Anfänger

PHP:
<?php

$pilot_id =	 $_SESSION["pilot_id"];  
$abfrage = 
        "SELECT 
            `Flugplan`.`flugnummer`, 
            `Flugplan`.`flughafenid1` , 
            `Flugplan`.`flughafenid2`,  
            `Flugplan`.`dep_time` , 
            `Flugplan`.`arr_time` ,
            `Flugplan`.`pilotid` ,  
            `Flugplan`.`registrierung`, 
            `flotte`.`registrierung`, 
            `flotte`.`flugzeug_id` 
        FROM 
            Flugplan, 
            flotte 
        WHERE 
            `Flugplan`.`pilotid` = '" . mysql_real_escape_string($pilot_id) . "'  
        AND 
            `flotte`.`registrierung` = `Flugplan`.`registrierung`";
$ergebnis = mysql_query($abfrage)
   or die ("MySQL-Error: " . mysql_error());

if (mysql_num_rows($ergebnis)) 	

{

	   print "<table border=\"0\" cellspacing=\"0\" ".
	   "cellpadding=\"5\" WIDTH=\"100\%\" class=\"tableLine\">\n";
 
  
	   while ($dataset = mysql_fetch_array($ergebnis))

$colchange++;
// modulo ob gerade oder ungerade
if($colchange % 2)
{$color="#666";}
else
{$color="#999";}

echo $color;  
           {
		   
	    print"<tr bgcolor=\"$color\">";
	    print "<td>".$dataset['flugnummer']."</td><td>".$dataset['flughafenid1']."&nbsp;"."</td><td>".$dataset['flughafenid2']."&nbsp;"."</td><td>".$dataset['dep_time']."</td><td>".$dataset['arr_time']."</td><td>".$dataset['flugzeug_id']."&nbsp;"."</td><td>".$dataset['registrierung']."&nbsp;"."</td><td><a href=\"FPS_buchungen_report.php?flugnummer=".$dataset['flugnummer']."\"><img src='../pictures/haken_gruen.jpg' alt=\"Bild fehlt \" width=\"15\" height=\"15\"/></a></td><td><a href=\"FPS_buchungen_loeschen.php?flugnummer=".$dataset['flugnummer']."\"><img src='../pictures/loeschen_Button.jpg' alt=\"Bild fehlt \" width=\"15\" height=\"15\"/></a></td></tr>";;  

	     	}
	print "</td></tr>\n";
	print "</table>\n";
      }

else
{

	   print "<table border=\"0\" cellspacing=\"2\" ".
	   "cellpadding=\"5\" WIDTH=\"100\%\" class=\"tableLine2\">\n";
 
           {
	    print "<tr>";
	    print "<td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td>Kein Flug gebucht</td></tr>";;  

	     	}
	print "</td></tr>\n";
	print "</table>\n";
      }
	  
?>
 
Hör auf dein Toppic zu pushen.

Du bist nicht auf meinen Beitrag eingegangen und deine Einzige Fehlerbeschreibung zu chmee's code war
Leider funktioniert das nicht!
Dann postest du einen Code bei dem du beim ersten (oder auch zweiten) Ausführen darauf kommen müsstest dass deine Ausgabe nicht mehr funktioniert weil du die Klammern (bei der while Schleife) falsch gesetzt hast.
In der Annahme das du nicht diesen Fehler meinst weil er zu offensichtlich ist da deine Ausgabe nicht mehr funktioniert: Was genau funktioniert denn nicht? Wenn du die Klammer richtig setzt müsste der generierte Code doch passen

abgesehen dass der HTML-Code nicht gerade optimal ist
* "Bild fehlt" ist kein angemessener Alt-Text; der Alt text sollte das Bild beschreiben damit jemand der das Bild nicht angezeigt bekommt auch weiß um was es geht; also in deinem Fall eher "Buchung löschen"
* bgcolor sollte nicht verwendet werden; dafür gibt es CSS
* ein &nbsp; in jeder Zelle ist auch überflüssig; ist nur nötig wenn die Zelle lehr ist
 
Vor deiner While-Schleife die Variable $colchange initialisieren.
PHP:
$colchange = 1;

und am Ende deiner While-Schleife setzt du das, löscht aber vom Anfang der Schleife raus. Dann sollte es funktionieren.
PHP:
$colchange++;

PHP:
echo $color;
solltes auch noch rausnehmen.
 
Das würde heißen ich muss die While Schlife um

PHP:
	   while ($dataset = mysql_fetch_array($ergebnis)
	   $colchange++;
if($colchange % 2)
{$color="#666";}
else
{$color="#999";})

erweitern. Allerdings verstehe ich nicht wo mein Klammerfehler ist auf den mich Dreamweaver auch hinweißt!
 
Zuletzt bearbeitet:
Du hast gleich mehrere Klammerfehler

PHP:
while ($dataset = mysql_fetch_array($ergebnis)){
$colchange++;
if($colchange % 2){
$color="#666";
}else{
$color="#999";
}
}

Und nun mach mal Folgendes:

PHP:
$counter = 1;

while ($dataset = mysql_fetch_array($ergebnis)){

    echo "<td class=\"row$counter\"></td>";
    echo "<td class=\"row$counter\"></td>";
usw.....

 $counter = $counter == 1 ? 2 : 1;
}

Und dann kannst du im CSS farbe für .row1 und .row2 vergeben.

mfg
 
Zuletzt bearbeitet:
PHP:
<?php
if (mysql_num_rows($ergebnis)) {

	print "<table border=\"0\" cellspacing=\"0\" "."cellpadding=\"5\" WIDTH=\"100\%\" class=\"tableLine\">\n";

	$colchange = 1;
	while ($dataset = mysql_fetch_array($ergebnis)){ // <--- Klammerfehler, hier gehört die klammer auf

		
		// modulo ob gerade oder ungerade
		if ($colchange % 2) {
			$color = "#666";
		} else {
			$color = "#999";
		}

	
		#{ // Klammerfehler, diese klammer gehört weg!
		/* du hast den Code an der falschen stelle eingefügt,
		   deshalb kam der klammerfheler
		 */ 

		print "<tr bgcolor=\"$color\">";
		print "<td>".$dataset['flugnummer']."</td><td>".$dataset['flughafenid1']."&nbsp;"."</td><td>".$dataset['flughafenid2']."&nbsp;"."</td><td>".$dataset['dep_time']."</td><td>".$dataset['arr_time']."</td><td>".$dataset['flugzeug_id']."&nbsp;"."</td><td>".$dataset['registrierung']."&nbsp;"."</td><td><a href=\"FPS_buchungen_report.php?flugnummer=".$dataset['flugnummer']."\"><img src='../pictures/haken_gruen.jpg' alt=\"Bild fehlt \" width=\"15\" height=\"15\"/></a></td><td><a href=\"FPS_buchungen_loeschen.php?flugnummer=".$dataset['flugnummer']."\"><img src='../pictures/loeschen_Button.jpg' alt=\"Bild fehlt \" width=\"15\" height=\"15\"/></a></td></tr>";
		
		// ++ hinter der Variablen bewrikt das immer 1 dazugezählt wird. in einer schleife passiert das bei jedem durchgang.
		$colchange++;
	} // while ende
	
	print "</td></tr>\n";
	print "</table>\n";
} else {

	print "<table border=\"0\" cellspacing=\"2\" "."cellpadding=\"5\" WIDTH=\"100\%\" class=\"tableLine2\">\n";

	{
		print "<tr>";
		print "<td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td>Kein Flug gebucht</td></tr>";
		;

	}
	print "</td></tr>\n";
	print "</table>\n";
}

Jetzt würd ich das aber nicht direkt ins HTML schreiben, sondern wie mein Vorredner schon geschrieben hat mit 2 CSS-Klassen anstatt der Farbe.
 
Zurück