Schleife

Sasser

Erfahrenes Mitglied
Guten Abend!

Ich habe einen kleinen Chat realisiert, bei welchem ich immer die letzten 20 Nachrichten ausgebe. Nun gibt es die Möglichkeit eine private Nachricht zu einem anderen User zu senden, indem man am folgendes schreibt: @User Nachricht

Das Problem ist nun, dass wenn viele private Nachrichten hintereinander geschrieben werden, dass der Chat für alle anderen so aussieht als wenn er leer ist da Sie die Nachricht nicht sehen können.

Wie kann man bei allen Usern immer 20 Nachrichten anzeigen lassen? Ich habe bereits hin und her überlegt, aber mir fällt keine vernünftige Lösung ein...

PHP:
$result = mysql_query ( "SELECT `user`, `message`, `time` FROM chat WHERE `mode` = '' ORDER BY `ID` DESC LIMIT 20", $db );
 
Abend!

Bau doch einfach ein weiteres Feld in Deine "chat"-Tabelle ein, die den User an den die Nachricht addressiert ist kennzeichnet - oder NULL, für öffentliche Nachrichten:
Code:
ALTER TABLE
  `chat`
ADD
   `target` INT NULL
DEFAULT
  NULL
;
Dann kannst Du das Query so umbauen:
Code:
SELECT
  `user`
, `message`
, `time`
FROM
  `chat`
WHERE
  `mode` = ''
AND(
  `target` IS NULL
OR
  `target` = $x
)
ORDER BY
  `ID` DESC
LIMIT
  20
;

Greetz
Enum
 
Zurück