[php/mysql] Zeilenfarbwechsel

Patrick

Angesehenes Mitglied
Hallo

Ich lese mit php aus einer mysql Tabelle Daten aus welche dann in einer Tabelle Zeile für Zeile unter einander aufgelistet werden.
Nun möchte ich damit die Lesbarkeit gefördert wird, dass immer abwechselnd die Farbe jeder Zeile geändert wird.
Also:
Zeile 1 -> grau
Zeile 2 -> weiss
Zeile 3 -> grau
etc.

Wie kann ich das am einfachsten bewerkstelligen?
Danke für die Hilfe.
smile.gif



mfg
Patrick
 
Ok, glaube habs gelöst...
Hier meine Lösung:


CODE
<html>
<head>
<title>Liste</title>
</head>
<body>
<?php
include("config.inc.php");
$db = @mysql_pconnect($host, $user, $pass) or die ("Verbindung mit MySQL-Server fehlgechlagen!");
@mysql_select_db($database, $db) or die ("Verbindung zur Datenbank fehlgeschlagen!");
$sql = "SELECT * FROM $table";

$farbe1 = '#E2E2E2';
$farbe2 = '#ECECEC';
$farbe = $farbe1;

echo "<table width=\"80%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">";

$result = mysql_query($sql, $db) or die(mysql_error());
$anzahlzeilen = mysql_num_rows($result);
while ($row = mysql_fetch_array($result)) {

$id = $row['id'];
$name = $row['name'];
$homepage = $row['homepage'];
$land = $row['land'];
$language = $row['language'];

if ($farbe == $farbe1)
{ $farbe = $farbe2
;}
else
{ $farbe = $farbe1
;}

echo "
<tr bgcolor=\"".$farbe."\">
<td width=\"30\" height=\"18\">".$id."</td>
<td width=\"110\">".$name."</td>
<td width=\"40\">
<div align=\"center\"><a href=\"http://".$homepage."\" target=\"_blank\"><img src=\"images/homepage.gif\" border=\"0\" alt=\"www\"></a></div></td>
<td width=\"80\">
<div align=\"center\"><img src=\"images/".$land.".gif\" border=\"0\" alt=\"".$land."\"></div></td>
<td width=\"80\">
<div align=\"center\">".$language."</div></td>
</tr>
"; }
?>
</table>
</body>
</html>

 
Hi Patrick

Es gibt da eine elegantere Lösung. Indem Du eine Varible bei jedem Durchlauf der while Schleife um eins erhöhst. Nun braucht Du nur noch die geraden und ungeraden der Varible auseinander zu halten.

Habe Dein Script umgeschieben, versuche es mal sollte so funktionieren. Ich habe es nicht getestet.

CODE <html>
<head>
<title>Liste</title>
</head>
<body>
<?php
include("config.inc.php");
$db = @mysql_pconnect($host, $user, $pass) or die ("Verbindung mit MySQL-Server fehlgechlagen!");
@mysql_select_db($database, $db) or die ("Verbindung zur Datenbank fehlgeschlagen!");
$sql = "SELECT * FROM $table";
$farbe1 = '#E2E2E2';
$farbe2 = '#ECECEC';
echo "<table width=\"80%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">";
$result = mysql_query($sql, $db) or die(mysql_error());
$anzahlzeilen = mysql_num_rows($result);
$i=1; #Hier wir die Variable i auf 1 gesetzt
while ($row = mysql_fetch_array($result))
{
$id = $row['id'];
$name = $row['name'];
$homepage = $row['homepage'];
$land = $row['land'];
$language = $row['language'];
if ($i%2 == 0 ) # Hier werden nur die geraden der variabelen $i gezeigt
{
$farbe1
}
else # Hier werden nur die ungeraden der variabelen $i gezeigt
{
$farbe2
}
echo "
<tr bgcolor=\"".$farbe."\">
<td width=\"30\" height=\"18\">".$id."</td>
<td width=\"110\">".$name."</td>
<td width=\"40\"><div align=\"center\"><a href=\"http://".$homepage."\" target=\"_blank\"><img src=\"images/homepage.gif\" border=\"0\" alt=\"www\"></a></div></td>
<td width=\"80\"><div align=\"center\"><img src=\"images/".$land.".gif\" border=\"0\" alt=\"".$land."\"></div></td>
<td width=\"80\"><div align=\"center\">".$language."</div></td>
</tr>";
$i++; # Hier wir die Variable um 1 erhöht
}
?>
</table>
</body>
</html>
 
$farben = array('#E2E2E2', '#ECECEC');
print('<tr bgcolor="'.$farben[$farbenIndex++ % 2].'">');

tongue.gif
 
Ich löse das immer so:

CODE <tr <?= ($zaehler%2==0)?'class="grau"':'class="weiss"' ?>>
 
Danke schonmal! Hätte da aber noch eine kleine Frage.
Und zwar, was die Vorteile sind bei euren Varianten?

Ich könnte die Zeilenzahl auch noch ausgeben lassen aber sonst...
 
Hi,

Na ja, Vorteile. Hier geht es vor allem um die Eleganz und um das sparen von Code-Zeilen, was in meinen Augen nie schlecht sein kann, denn der Code soll ja übersichtlich sein und du sollst ihn immer noch verstehen, wenn du ihn nach einem Jahr wieder anschaust
wink.gif
...

Diesbezüglich sind die Varianten mit dem Array und mit der CSS-Klasse sicher am besten geeignet, da sie möglichst kurz gehalten sind.
Ich würde persönlich die Variante mit der CSS-Klasse bevorzugen, da man langsam aber sicher von den HTML-Attributen wie z.B. bgcolor abkommen sollte ...

Greats,

S.B
 
QUOTE (z-web @ So 26.6.2005, 12:51) Aber wie Du siehst arbeiten alle Varianten mit %2



Hehe ja, habe ich mir auch gedacht (zuerst), dass ich das halt mit ungeraden/geraden Zahlen machen könnte also mit %2, aber ich Anfänger hab da etwas falsch geschrieben darum gings nicht. ^^
 
Es gäbe auch noch die Variante mit Templates... Z.B. die Odd/Even Konditionen von patTemplate. Aber damit schiesse ich wohl hier übers Ziel hinaus.
smile.gif
 
Zurück
Oben