Bestimmte Zeilen anders aus der Datenbank ausgeben
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
abfragen
abschneiden
absender
betreff
binde
code
date
datum
eintrag
ergebnis
feld
funktionieren
nachricht
ordern
ordner
schleife
spalte
status
system
-
Hi,
ich arbeite ja grad an einem PN-System.
Die Nachrichten kommen an, aber wie hebe ich ungelesene Nachrichten hervor?
Ich möchte sie gerne dick machen.
Alle Nachrichten werden per While-Schleife ausgegeben.
Hab da echt keine Idee wie ich einzelne ungelesene Nachrichten dick oder farbig machen kann.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo,
du solltest eine neue Spalte in der Tabelle einfügen: ungelesen. Diese setzt du standardmäßig auf 1. Wenn der Benutzer eine Nachricht liest, setzt du den Wert von ungelesen für diese Nachricht auf 0 (mit UPDATE).
Um die Nachrichten fett hervorzuheben musst du in deiner while-schleife prüfen, ob das ungelesen-Feld auf 1 gesetzt ist. Also etwa so:
if ($row["ungelesen"] == 1) {
echo "<strong>" . htmlspecialchars($row["titel"]) . "</strong>";
} else {
echo htmlspecialchars($row["titel"]);
} -
Wie binde ich das in die While-Schleife mit ein?
Bei mir sieht das etwa so aus:
$abfrage = "SELECT * FROM mail WHERE empfanger LIKE '$username' AND status LIKE 'unread' OR ordner LIKE 'read' ORDER BY '$order'"; $ergebnis = mysql_query($abfrage); while($row = mysql_fetch_object($ergebnis)) { $betreff = $row->betreff; $datum = date("d.m.Y H:i", $row->datum); $absender = $row->absender; $id = $row->id; echo "<tr><td><input type=\"checkbox\" name=\"mail[]\" value=\"$id\"></td><td><a href=\"mail.php?mode=read&id=$i\"> $betreff</a></td><td>$datum</td><td>$absender</td></tr>"; }
-
Wie binde ich das in die While-Schleife mit ein?
Bei mir sieht das etwa so aus:
$abfrage = "SELECT * FROM mail WHERE empfanger LIKE '$username' AND status LIKE 'unread' OR ordner LIKE 'read' ORDER BY '$order'"; $ergebnis = mysql_query($abfrage); while($row = mysql_fetch_object($ergebnis)) { $betreff = $row->betreff; $datum = date("d.m.Y H:i", $row->datum); $absender = $row->absender; $id = $row->id; echo "<tr><td><input type=\"checkbox\" name=\"mail[]\" value=\"$id\"></td><td><a href=\"mail.php?mode=read&id=$i\"> $betreff</a></td><td>$datum</td><td>$absender</td></tr>"; }
also, wie dein Code aussieht, wird das nicht funktionieren. Es würde dann immer ein "<a href="mail.php?mode=read&id=x" ausgegeben.
Du solltest nach "$id = $row->id;" noch Abfragen, was der Read-Status ist. (am Besten mit True oder False) Die Abfrage oben an mySQL ("status LIKE 'unread' OR ordner LIKE 'read') brauchst du dann nicht mehr.
Unten bei der Ausgabe fügst du dann abhängig vom Read status (True oder False) einen HTML-Code-Abschnitt ein, ob es dick geschrieben wird oder nicht.
Ich hoffe ich konnte dir helfen,
MfG
s1m13 -
Wann ist was true und wann false?
Wenn es gelesen ist soll es auf true gesetzt werden?
Ich hab das mit read und unread gemacht, weil ich auch da delete miteinbauen wollte, damit man die Nachrichten auch löschen kann.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage