Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Nachrichtensystem in php mysql

Ich denke, Sie können Ihre aktuelle Tabellenstruktur für den Nachrichteninhalt beibehalten. Anstatt separate Spalten oder Gelöscht-Flags hinzuzufügen, wäre es besser, eine separate Tabelle für Postfächer zu haben.

Also Ihre aktuelle mbox-Tabelle:

id   message    sentby   sentto    created

Dann noch eine Tabelle für user_mailboxes

id   user    mailbox    message_id

Sie müssten insgesamt drei Einfügungen vornehmen, wenn Sie eine Nachricht schreiben, eine in die Nachrichtentabelle und für jeden Benutzer in die Tabelle user_mailboxes.

Ihre mbox-Daten sehen also so aus:

id   message     sentby    sentto    created 
1    Hi There    UserA     UserB     2015-01-26
2    Hello Back  UserB     UserA     2015-01-26

Und user_mailboxes-Daten würden so aussehen:

id   user        mailbox   message_id
1    UserA       Out       1
2    UserB       In        1
3    UserB       Out       2
4    UserA       In        2

Dadurch können Sie einzelne Zeilen für die Tabelle user_mailboxes löschen. Dies würde auch zukünftige Add-Ons ermöglichen, indem Sie Nachrichten an mehrere Benutzer gleichzeitig senden (eine neue Zeile für jeden Benutzer) und bei Bedarf mehr als ein Postfach hinzufügen können (Ein, Aus, Papierkorb, Wichtig usw.).

Um die E-Mails eines Benutzers für ein bestimmtes Postfach nachzuschlagen, verwenden Sie einfach einen Join

SELECT * FROM user_mailboxes LEFT JOIN mbox ON mbox.id = user_mailboxes.message_id WHERE user_mailboxes.user = "$user" AND user_mailboxes.mailbox = "Out";

Sie benötigen beim Löschen ein Bereinigungsskript, um sicherzustellen, dass es keine verwaisten Nachrichten gibt, die nicht in der user_mailboxes-Tabelle vorhanden sind.