Tabellen in abwechselnden Farben

Sputnik

Mitglied
Ich lese einige Datensätze aus der Datenbank aus. Nun möchte ich die Lesbarkeit ein wenig verbesser (später auch für den Ausdruck). Am ehesten kann ich mir das mit unterschiedlich Farbigen Tabellen vorstellen.

D.h. alle geraden Ausgaben sollen mit heller Farbe hinterlegt sein. Und alle Ungeraden mit Dunklen.

Den Ansatz habe ich also schon mit gerade und ungerade, doch wie setze ich das in den Tags um - <table><tr bgcolor="???"> - damit das auch funktioniert?
 
ich würde einfach eine interne variable hochzählen lassen.

PHP:
$i="0";

while ($row = mysql_fetch_array($result))
{
  $i++;
  .... //
}

in die while schleife würde ich dann eine if abfrage bauen und je nachdem ob die variable i gerade oder ungerade ist, läßt du eine farbig hinterlegte, bzw. nicht farbig hinterlegte tabelle mit dem db inhalt darstellen.
 
Du definierst ein Array mit zwei Elementen, den verschiedenen Farben:
PHP:
$col[0] = "#000000";
$col[1] = "#cccccc";

Dann machst du in einer Schleife eine eine Prüfung auf das Ergebnis ob es durch einen Teiler passt oder nicht:

PHP:
$i = 0;

while($rows = mysql_fetch_array($result))
{
  $colIDX = $i % 2; // returns 0 or 1
  $col[$colIDX];
  $i++;
}
$col[$colIDX] beinhaltet jetzt deine Farbe. Dieses kannst du in dein TR Background einbauen!
 
Ich mach das immer so:


PHP:
function bgcolor($row = 1) {
    static $i;
    static $col = array('#FFDDDD','#DDFFDD'); // etc.
    $bg = $col[(int)($i + .00000001)];
    $i += 1 / $row;
    if ($i >= count($col)) $i = 0;
    return $bg;
}
printf("<tr bgcolor='%s'><td>...</td></tr>\n", bgcolor(2));
 
Hallo!

Ich habe eine Frage zu dem Skript. Ich würde gern wissen was das '%s' bedeutet und wie ich das in einem HTLM Code einbinden kann denn <? echo %s ?> geht nicht. Wenn ich das mit $bg mache werden über der Tabelle die Farbenwerte ausgegeben.

thx for help
ice
 
%s ist ein Platzhalter für printf bzw sprinf.
Es steht dafür, dass die Variable, die an Stelle von %s stehen soll als String ausgegeben werden soll.
Mit echo ist das so nicht möglich. Im Prinzip würde folgnedes mit echo das gleiche bewirken:
PHP:
echo "<tr bgcolor=\"".bgcolor(2)."\"><td>...</td></tr>\n";
 
Super, danke euch alle!

Endlich funktioniert es - dabei dachte ich das "printf" nur ein Schreibfehler war weil Dadurch der Code nicht mehr Bunt war. Man lernt ja nie aus...:-)
 
Also ich habe das mal mit dem Code von Interritor probiert und habe aber probleme das es bei einer Farbe bleibt. Hier mal der Code komplett
PHP:
<?php
function bgcolor($row = 1) {
    static $i;
    static $col = array('#666666','#999999'); // etc.
    $bg = $col[(int)($i + .00000001)];
    $i += 1 / $row;
    if ($i >= count($col)) $i = 0;
    return $bg;
}
$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))

           {
		   
	    print"<tr bgcolor=\"".bgcolor(2)."\">";
	    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";
      }
	  
?>

Kann mir jmd. helfen?
 
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
 
Zuletzt bearbeitet:
Zurück