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



## fishguts (1. April 2002)

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:

```
<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


----------



## lambda (1. April 2002)

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.


----------



## Karl Förster (1. April 2002)

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

// 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.


----------



## ..ooOOipOOoo.. (1. April 2002)

Hoi!

Wieso so viel unnötig schreiben?


```
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


----------



## Matthias Reitinger (1. April 2002)

```
for ($i=0; $i<$zeilen; $i++)
{
?>
<tr bgcolor="<?=($i%2) ? $farbe1 : $farbe2) ?>">
  <td></td>
</tr>
<?
}
```
Kürzer   


reima

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


----------



## ..ooOOipOOoo.. (1. April 2002)

Hoi!



			
				reima hat gesagt.:
			
		

> [ PHP ]$i%2



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..


----------



## fishguts (1. April 2002)

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

ich will's in etwa so haben:

```
$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


----------



## fishguts (1. April 2002)

zu hülf!
das läst sich doch wohl irgendwie realisieren, oder?


----------



## ..ooOOipOOoo.. (1. April 2002)

Hoi!

Erstmal deine Fragen aus dem Weg räumen:

Ich gehe mal davon aus, dass du nicht weiß, was dieser Ausdruck soll:

```
$Ausdruck ? $Ergebnis1 : $Ergebnis2;
```

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


```
$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..


----------



## lexi (1. April 2002)

```
<?
$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*


----------

