Dawno mnie tutaj nie było ale moja głowa już nie potrafi znaleźć nowego rozwiązania, wiec chciałbym prosić Was o pomoc.
Otóż posiadam w swoim serwisie prywatne wiadomości i mam mały problem z nimi.
Otóż działają one na zasadzie, czatu gdzie ludzie ze sobą mogą rozmawiać bez przeładowania strony czyli można powiedzieć taki komunikator.
Użytkownik [X] który nigdy nie rozmawiał z użytkownikiem [Y] pisząc do niego prywatną wiadomość rozpoczyna ROZMOWĘ, a w rozmowe znajdują się wiadomości przesłane do siebie.
Schemat bazy danych wygląda nastepująco :
TABELA MESSSAGE_talk - Tutaj zapisywane są rozmowy, do których podpięte będą dopiero przesłane wiadomości
CREATE TABLE `MESSAGE_talk` ( `id` int(9) NOT NULL AUTO_INCREMENT, `idSender` int(9) NOT NULL, `idUser` int(9) NOT NULL, `ipAdress` varchar(25) NOT NULL, `dateStart` datetime NOT NULL, `viewSender` enum('0','1') DEFAULT '1', `viewUser` enum('0','1') DEFAULT '1', `dateLastMessage` datetime NOT NULL ) ENGINE=MyISAM;
TABELA MESSSAGE_messages - Tutaj zapisywane są wiadomości należące do rozmowy, wspólny klucz MESSAGE_talk.id = MESSAGE_messages.idTalk
CREATE TABLE `MESSAGE_messages` ( `id` int(9) NOT NULL AUTO_INCREMENT, `idTalk` int(9) NOT NULL, `idSender` int(9) NOT NULL, `idUser` int(9) NOT NULL, `text` text NOT NULL, `ipAdress` varchar(25) NOT NULL, `addDate` datetime NOT NULL, `read` enum('0','1') NOT NULL DEFAULT '0' ) ENGINE=MyISAM;
---------------------------------------------------------------------------------------------------
W chwili obecnej wszystko działa poprawnie, poczta jest sprawna, ale mam problem z wyświetlaniem Rozmów po przejściu do /poczta
Chciałbym aby były wyświetlane rozmowy, według kolejności w jakiej ostatnio otrzymałem odpowiedź.
I tutaj są dla mnie schodzi, bo w chwili obecnej wyciągam dane grupując wiadomości, ale nie mogę już sortować według daty przesłania wiadomości, przez co rozmowa rozpoczęta wczoraj, jest gdzieś na szarym końcu mimo, że posiada nową wiadomość.
Dane wyciągam takim zapytaniem ->
mysql_query("SELECT msg.idTalk, msg.text, msg.addDate, msg.read, user.login, user.pseudonym, user.avatar FROM MESSAGE_messages AS msg LEFT JOIN MESSAGE_talk AS talk ON talk.id = msg.idTalk LEFT JOIN PROFILE_users AS user ON user.id = msg.idSender WHERE msg.idUser='$myId' GROUP BY msg.idTalk ORDER BY talk.dateLastMessage DESC ");
Niestety Order tutaj i tak nie ma znaczenia, bo wyniki i tak są wyświetlane w zły sposób.
Wiem że może być ciężko to zrozumieć, ale może uda się komuś załapać o co mi chodzi, mogę pokazać przykład na żywo jak to wygląda.
Byłbym bardzo wdzięczny za pomoc w nakierowaniu w którą stronę iść, bo już mocno przekombinowałem sobie i teraz stoję w martwym punkcie.
W najgorszym wypadku przepiszę całą pocztę na nowo.
Z góry bardzo dziękuję za pomoc