tabelle mit php erzeugen: zeilenfarbe soll sich abwechseln (2 farben)

fishguts

Erfahrenes Mitglied
Ich will mit php eine tabelle generieren lassen
die tabelle hat zwei spalten und die zeilen nehmen dauerhaft zu
wie kann ich es anstellen, dass sich 2 hintergrundfarben für die zeilen immer abwechseln?

beispiel:
Code:
<TR bgColor=#fafafa> 
  <TD>&nbsp;</TD>
  <TD>&nbsp;</TD>
</TR>
<TR bgColor=#f5f5f5>
  <TD>&nbsp;</TD>
  <TD>&nbsp;</TD>
</TR>
und so weiter...

hoffe, ihr versteht, was ich meine :)
gruss
 
Hi,

$farbe = "#fafafa";

while($weitermachen){
echo "<TR bgColor=#fafafa>";
echo "<TD> </TD>";
echo "<TD> </TD>";
echo "</TR>";

if ($farbe=="#fafafa"){
$farbe = "#f5f5f5"
}
else {
$farbe = "#fafafa";
}
}

Hab's nicht getestet, aber sollte klappen.
 
Du brauchst an dieser Stelle auf alle Fälle eine zusätzliche Variable. Wie du sie nennst ist ja egal. Ich nenn sie im folgenden Beispiel einfach mal $dummy.

PHP:
<?php

// Dies ist ein Beispiel für eine Tabelle, in der die Zahlen
// 1 - 10 einfach ausgegeben werden.

// Dummyvariable setzen
$dummy = false;

// Schleife ausführen
for ($i = 1; $i <= 10; $i++)
{
  echo "<tr bgcolor=\"".($dummy)?"#fafafa":"#f5f5f5"."\">\n";
  echo "  <td>$i</td>\n";
  echo "</tr>\n";

  // Jetzt noch die Variable im Wert umkehren.
  // d.h. true > false, false > true
  $dummy = ($dummy) ? true : false;
}

?>

Probiers mal aus. Müsste eigentlich gehen.
 
Hoi!

Wieso so viel unnötig schreiben?

PHP:
for ($i = 0; $i < $zeilen; $i++)
{
?>
<tr bgcolor="<?php echo(gmp_mod($i,2) ? $farbe1 : $farbe2) ?>">
  <td></td>
</tr>
<?php
}

Gruesse

..ooOOipOOoo..

PS: Im Übrigen: $dummy = ($dummy) ? true : false; lässt die Variable gesetzt und kehrt sie nicht um :)
 
Zuletzt bearbeitet:
PHP:
for ($i=0; $i<$zeilen; $i++)
{
?>
<tr bgcolor="<?=($i%2) ? $farbe1 : $farbe2) ?>">
  <td></td>
</tr>
<?
}
Kürzer :p ;)


reima

PS: Stimmt, $dummy = ($dummy)?true:false; ändert die Variable nicht. Aber wozu eine if-Abfrage? $dummy=!$dummy; tut's auch :)
 
Hoi!

reima hat gesagt.:

Genau, der wear mir eben entfallen (der Operator), deswegen habe ich auch die funktion aus der GNU MP Library benutzt....
Langsam werden das mir zuviele Sprachen, die mir durch den Kopf schwirren, obwohl es nur 4 sind %)

Gruesse

..ooOOipOOoo..
 
aus beitrag #3 und #4 werd ich nicht so richtig schlau :rolleyes:
kann ich eure lösungen auch direkt in eine echo anweisung einbinden? wie genau?

ich will's in etwa so haben:
PHP:
$query = "SELECT * FROM $table";
$res = mysql_query($query);
$num = mysql_num_rows($res);

$farbe1 = "#F5F5F5";
$farbe2 = "#FAFAFA";

for($i = 0; $i < $num; $i++)
    {
        echo "<tr HIER DIE ANWEISUNG FÜR DIE BGCOLOR >";
    }

thx so far
 
Zuletzt bearbeitet:
Hoi!

Erstmal deine Fragen aus dem Weg räumen:

Ich gehe mal davon aus, dass du nicht weiß, was dieser Ausdruck soll:
PHP:
$Ausdruck ? $Ergebnis1 : $Ergebnis2;

Ganz einfach, teste es ;)
Damit du auch weißt wie:

PHP:
$ausdruck = true
$ergebnis1 = "Ergebnis 1";
$ergebnis2 = "Ergebnis 2";

echo($ausdruck ? $ergebnis1 : $ergbnis2);

Dann wirst du warscheinlich nicht wissen, was gmp_mod bzw % (die machen nämlich das selbe) sind. Nun den %-Operator nennt man Modulo-Operetor und zwar, weil er eine Modulo Operation mit den beiden Werten vornimmt. Ich weiß, Modulo hört sich kompliziert an, aber das konntest du schon in der Grundschule, nur hierß es da nicht Modulo, sondern Restwert. Der Modulo Operator macht alss eine Integer Division (2 ganze Zahlen werden durcheinander geteilt) und liefert den Rest (da ganze Zahlen ja keine Kommastellen haben) als Ergebnis zuürck.
Ein paar Beispiele:

5 % 2 = 1
weil
5 : 2 = 2 Rest 1

oder

14 % 3 = 2
weil
14 : 3 = 4 Rest 2

Ich hoffe du hast das jetzt verstanden :)
Die nächste Frage:
Was zum Teufel soll der Modulodingsda dann mir bringen?!

Ganz einfach: Mit dem Modulo-Operator können wir ganz einfach prüfen, ob eine Zahl ungerade oder gerade ist, denn eine gerade Zahl % 2 ergibt immer 0 (eine gerade Zahl ist imemr durch 2 Teilbar ohne einen Restwert) und eine ungerade immer 1. Und da gerade und ungerade Zahlen immer abwechselnd kommen kann man so sehr schön ein Wechselmuster realisieren.

So, jetzt bist du hoffentlich schlauer :)

Gruesse

..ooOOipOOoo..
 
PHP:
<?
$y = $i = 0;
while ($i < 11)
{
  echo '<tr bgcolor="'.($y)?'#fafafa':'#f5f5f5'.'">'."\n".'<td>'.$i.'</td>'."\n".'</tr>'."\n";
$y = 1-$y;
$i++;
}
?>

noch kürzer ;)

[edit]
hmm, obwohl.. naja, eigentlich nicht.. *lach*
 
Zuletzt bearbeitet:
Zurück