[PHP] Programmierung eines Forums

Zweipunktnull

Commander
Registriert
Dez. 2004
Beiträge
2.546
Hallo!

Ich bin dabei ein Forum zu programmieren und ich würde da gern was machen, wofür mir keine lösung einfällt :)

Also alle Beiträge eines Themas werden mit einer while-Schleife ausgelesen

PHP:
$sql = "SELECT * FROM replies WHERE thread_id = $thread_id ORDER BY id";
$abfrage = mysql_query($sql);
while ($datensatz = @mysql_fetch_assoc($abfrage)) {
	$ausgabe .= "<tr>
                   <td style='background-color: #ffcc66' rowspan='3'>$datensatz[user]</td>
                   <td style='background-color: #ffcc66'>$datensatz[date]</td>
                 </tr>
                 <tr>
                   <td style='background-color: #ffcc66'>" . nl2br($datensatz['message']) . "</td>
                 </tr>
                 <tr>
                   <td style='background-color: #ffcc66'>&nbsp;</td>
                 </tr>";
}

nun hab ich aber das problem, dass ich gerne jeden zweiten beitrag in einer anderen farbe haben möchte. und da das schlecht zu erklären ist, hab ich direkt mal ein bsp ausm internet :)
http://www.christ-online.de/modules.php?op=modload&name=eBoard&file=viewthread&tid=552

Soetwas will ich auch machen, einfach weil es übersichtlicher ist.
also immer

Beitrag 1: Farbe A
Beitrag 2: Farbe B
Beitrag 3: Farbe A
Beitrag 4: Farbe B
Beitrag 5: Farbe A
und so weiter...

nur wie kann ich das realisieren? in meiner schleife ist jetzt ja immer die selbe farbe festgelegt...

MfG
 
Zuletzt bearbeitet:
Wie wärs wenn du einen Zähler implementierst, der die Durchläufe der while-Schleife zählt, mit einer einfachen Modulo-Operation überprüfst ob der Zähler gerade oder ungerade ist und die Farbe entsprechend setzst?
 
Gut, um dir mal bissl unter die Arme zu greifen, wie Alphamosse das meint, hier mal der Sachverhalt dargestellt:
PHP:
$sql = "SELECT * FROM replies WHERE thread_id = $thread_id ORDER BY id";
$abfrage = mysql_query($sql);
$i = 1;
while ($datensatz = @mysql_fetch_assoc($abfrage)) {
    $bg_color = ($i % 2 == 0) ? 'background-color: #eee' : 'background-color: #ffcc66';
    $ausgabe .= "<tr>
                   <td style='".$bg_color."' rowspan='3'>$datensatz[user]</td>
                   <td style='".$bg_color."'>$datensatz[date]</td>
                 </tr>
                 <tr>
                   <td style='".$bg_color."'>" . nl2br($datensatz['message']) . "</td>
                 </tr>
                 <tr>
                   <td style='".$bg_color."'>&nbsp;</td>
                 </tr>";
    $i++;
}
 
Würde es mit true und false machen
PHP:
$sql = "SELECT * FROM replies WHERE thread_id = $thread_id ORDER BY id";
$abfrage = mysql_query($sql);
$i = true;
while ($datensatz = @mysql_fetch_assoc($abfrage)) {
   if($i == true)
    {
            $bg_color = 'background-color: #eee';
             $i = false;
    }
     else
     {
          $bg_color =  'background-color: #ffcc66';
           $i = true;
     }
    $ausgabe .= "<tr>
                   <td style='".$bg_color."' rowspan='3'>$datensatz[user]</td>
                   <td style='".$bg_color."'>$datensatz[date]</td>
                 </tr>
                 <tr>
                   <td style='".$bg_color."'>" . nl2br($datensatz['message']) . "</td>
                 </tr>
                 <tr>
                   <td style='".$bg_color."'>&nbsp;</td>
                 </tr>";
}
Dann hat man nich so viele Berechnungen und es kommt das gleiche bei raus.
 
Wieso denn Berechnung...

Das mit dem Zähler ist schon super, so mach ich das auch:

WENN $ZÄHLER == 1 DANN FARBE A UND $ZÄHLER +1
SONST FARBE B UND ZÄHLER = 1

:) haha gute so???? ich sach ma gute übersetzung :) haha
 
Ja das geht auch, aber oben ist in der If-Anweisung noch eine Modulo Berechnung, und wenn es ein wirklich großes Forum ist/wird, dann sollte man dochüberlegen ob das nich doch mit deinem oder meinem Vroschlag machen sollte.
 
Zurück
Oben