[PHP]Problem beim Ausgeben mehrerer Spalten (versch. Farben)

eggman

Well-known member
ID: 70062
L
21 Mai 2006
216
8
Grüß Gott ;)

Ich habe eine Abfrage, die Informationen aus zwei verschiedenen Tabellen ausliest und dabei eine Zwischentabelle für Verknüpfungen nutzt. Es klappt alles bestens, kann sie ohne Probleme ausgeben, auch wenn für einen Eintrag mehrere k.name zugeordnet sind.

Nun möchte ich aber bei der Ausgabe die Zeile des ersten Eintrags schwarz färben, die nächste weiß, wieder schwarz usw.
Wenn nun aber mehrere k.name zugeordnet sind, dann wird die Abwechslung unterbrochen und die Farbe der vorhergegangen Zeile so oft beibehalten, wie k.name vorhanden waren.

Die Codes dazu.. Abfrage:
PHP:
$gamename = $_GET["gamename"];

$sql = "
    SELECT i.id AS id, i.name, i.beschreibung, k.kname, k.kicon 
    FROM ga_konsolen AS k 
    LEFT JOIN ga_verknuepfung AS v ON v.kid = k.kid 
    LEFT JOIN ga_infos AS i ON i.id = v.gid
    WHERE MATCH (i.name) AGAINST ('$gamename');
";
$result = mysql_query($sql);

if (mysql_num_rows($result) != 0) {

Und die Ausgabe samt "Farbenwechsler" ;)
PHP:
$colClass=array("#000000","#FFFFFF");
$res = mysql_query($sql);



$row = mysql_fetch_object($res);
$id = $row->id;

$i=count($colClass);
echo '<table><tr><td>'.$row->name.'</td><td>'.$row->beschreibung.'</td><td>'.$row->kname;

while($row = mysql_fetch_object($res))
{
    if($row->id != $id)
        echo '</td></tr><tr bgcolor="'.$colClass[$i%count($colClass)].'"><td>'.$row->name.'</td><td>'.$row->beschreibung.'</td><td>'.$row->kname;
    else
        echo ', '.$row->kname;
    
    $id = $row->id;
    $i++;
}
echo '</td></tr></table>';

}
else
{
    echo "Nix gefunden...";
}

Wäre für jede Hilfe dankbar :ugly:
 
Du darfst $i halt nur dann erhöhen, wenn auch wirklich die Farbe geschrieben wurde. Sprich: Nur im if-Teil, nicht aber, wenn der else-Teil genommen wird.
 
Einfach n Wechsler einbauen:
PHP:
$bgcolor="#afafaf";
while(!$finished)
{
  echo "<td style=\"background-color: $bgcolor;\">Data</td>";

  $bgcolor=($bgcolor=="#afafaf") ? "#dfdfdf" : "#afafaf";
}
Alternativ für Farbrotation in mehreren Farben:
PHP:
$colors[]="#afafaf";
$colors[]="#dbdbdb";
$colors[]="#050505";
$maxcolor=count($colors); // 3
$curcolor=0;

while(!$finished)
{
  echo "<td style=\"background-color: ".$colors[$curcolor].";\">Data</td>";

  if(++$curcolor==$maxcolor) $curcolor=0;
}
Wie im Beispiel ersichtlich, gibt es das Attribut bgColor nicht ;)