Ich habe ein Posteingangssystem erstellt. Angemeldete Benutzer können andere angemeldete Benutzer benachrichtigen. Die Tabelle usermessage aus der Datenbank hat zwei Felder 1. userid und 2. messageid. Das Folgende ist ein Auszug aus dieser Tabelle.Mysql und PHP-Posteingang Update
userid | messageid
12 | 1
13 | 1
14 | 2
15 | 2
12 | 3
15 | 3
12 | 4
14 | 4
In obiger Situation, wenn Benutzer '12' Nachricht an Benutzer '13' sendet. Ich möchte, dass die Nachrichten-ID '1' an den unteren Rand der Tabelle verschoben wird, sodass, wenn der Benutzer '12' oder '13' sein Postfach überprüft, die Nachrichten-ID '1' oben im Posteingang als aktuelle Konversation angezeigt werden muss. Bisher konnte ich dies erreichen, indem ich die Nachrichten-ID '1' lösche und als neue Abfrage für jede Benutzer-ID einfüge. Das ist mein Code:
DELETE FROM usermessage WHERE userid = '12' and messageid = '1';
INSERT INTO usermessage SET userid = '12', messageid = '1';
DELETE FROM usermessage WHERE userid = '13' and messageid = '1';
INSERT INTO usermessage SET userid = '13', messageid = '1';
Ist es möglich, dies mit einer Abfrage zu erledigen. Bisher konnte ich im Stackflow keine definitive Antwort auf mein Problem finden.
OMG. Haben Sie schon einmal davon gehört, Daten zu normalisieren und ein gutes Design für relative db zu erstellen? – heximal
Dies wäre viel besser mit einem Timestamp-Feld in der Usermessage-Tabelle (mit etwas wie ON UPDATE CURRENT_TIMESTAMP) und einem sinnvolleren ORDER BY auf der Auswahl für die Anzeige des Posteingangs erreicht werden. – cmbuckley
sollte nicht 12 Senden an 13 nur eine neue Zeile erstellen, sollten Sie nicht Nachricht ID zu recyceln. –