Geçenlerde ben geliştiriyorum özel bir mesajlaşma sistemi benim deyim içinde bir delik bulduk.
İşte benim tablonun temel yapısı var:
tblpm:
unique_id thread_id subject content receiver_id sender_id date_sent
Ben geliştiriyorum sayfa tüm En son mesajları kullanıcı için görüntülenir gelen vardır.
Ben kullanıyorum SELECT ifadesi:
$data = mysql_query("
SELECT tblpm.* FROM tblpm
WHERE date_sent
IN(
SELECT MAX(date_sent)
FROM tblpm
GROUP BY message_id
)
AND receiver_id ='$usrID'
ORDER BY id DESC") or die(mysql_error());
Şimdi, burada ben fark ettim ne: Ben ilk kullanıcıya mesaj gönderdiğinizde, o ince gönderir ve gelen kutusunda görünmüyor. (O, o "gönderilmiş öğeler" göstermek gerektiğini olmamalıdır çünkü). Bir kullanıcı (dolayısıyla aynı parçacığı) mesajı "cevap" olsaydı Sonra, o da kutunuzda kadar güzel göstermek istiyorum.
(Diğer bir deyişle, iplik üçüncü mesajı) "cevap" cevap ise SEÇ statment bir iplik MAX (date_sent) seçmek yöneliktir Ancak, bu, artık kutunuzda görünmüyor WHERE receiver_ID = $ usrID. Peki, sorun bir sonucu olarak yani, SELECT deyimi dişli öğelerden 'herhangi' göstermek değil, bir dişli öğenin en son (date_sent) başkası tarafından "alınan" ediliyor olmasıdır.
Umarım bu mantıklı.
Buradaki ne bir görsel temsilini bulunuyor:
unique_id thread_id subject receiver_id sender_id date_sent
1 144 Msg 22 33 2009-07-22 //Will display fine in sent items.
2 144 re: Msg 33 22 2009-07-23 //Will display fine in inbox of user (usrID 33).
3 144 RE: re:Msg 22 33 2009-07-24 //Once this message is sent, the entire thread (thread_id 144) no longer displays in the inbox.
Bu konuda herhangi bir yardım çok takdir!