Pm Algoritması
-
-
1-2 küçük deneme dışında yapmamistim onlarda da şöyle yaptım PM atılacak kişinin id sine göre mesajın içeriğini kaydediyorum okundu/görüldü=0 sonra bir kişi giriş yaptığında alıcı olarak kendi odası varsa ve okundu 0 ise ye i PM in var diyorum tıklayınca PM e okundu yü 1 yapiyordum ama 5-10 kullanıcıda sıkıntı yok ama yüksek sayılarda sıkıntı olabilir belki
-
asiminnesli bunu yazdı
1-2 küçük deneme dışında yapmamistim onlarda da şöyle yaptım PM atılacak kişinin id sine göre mesajın içeriğini kaydediyorum okundu/görüldü=0 sonra bir kişi giriş yaptığında alıcı olarak kendi odası varsa ve okundu 0 ise ye i PM in var diyorum tıklayınca PM e okundu yü 1 yapiyordum ama 5-10 kullanıcıda sıkıntı yok ama yüksek sayılarda sıkıntı olabilir belki
bu kızmı bende yaptım hocam mesele şuki mesela tahribatta eski gönderdiğin mesajlarda duruyor. Bu ksım kafamı çok karıştırdı.
-
[Message]
Id
ParentId (NULL)
ReiceverUserId
SenderUserId
Content
CreateDate
IsRead
-
Tablo:
id (int, unique) - from_id (int) - to_id (int) - is_read (boolean, [0,1]) - message (nvarchar(1000))
Tablomuz yukarıdaki gibi olabilir.
id zaten unique, yapacak bir şey yok.
from_id, gönderenin id'si (kullanıcı tablosunda vardır ya da olmalı).
to_id, alıcının id'si (yine kullanıcı tablosundan).
is_read, alıcı okudu mu? Henüz okumadıysa 0, okuduğunda 1. Bu güncellemeyi id'ye sahip link alıcı tarafından tıklandığında yapabilirsin.
message, mesaj içeriği. Kullanıcıya gösterirken html taglarını silmen ya da dönüştürmen (<'yi < gibi entitylere dönüştürmen ve utf8'in görülmeyen karakterlerini filtrelemeni tavsiye ederim).
-
mesajID(int), konu(text), mesaj(text), tarih(datetime), gonderenId(int), gonderenSildi(bool), aliciId(int), aliciOkudu(bool), aliciSildi(bool)
Bu işin tek tablolu çözümü budur. Hem gonderen hem alıcı sildiğinde mesaj fiziki olarak silinebilir.
-
Nvidia bunu yazdıasiminnesli bunu yazdı
1-2 küçük deneme dışında yapmamistim onlarda da şöyle yaptım PM atılacak kişinin id sine göre mesajın içeriğini kaydediyorum okundu/görüldü=0 sonra bir kişi giriş yaptığında alıcı olarak kendi odası varsa ve okundu 0 ise ye i PM in var diyorum tıklayınca PM e okundu yü 1 yapiyordum ama 5-10 kullanıcıda sıkıntı yok ama yüksek sayılarda sıkıntı olabilir belki
bu kızmı bende yaptım hocam mesele şuki mesela tahribatta eski gönderdiğin mesajlarda duruyor. Bu ksım kafamı çok karıştırdı.
sql sorgusunu alici id ye göre yaparsan gelen mesajlarını görürsün gonderenid için çalıştırıp tarihe göre order by çekersen gönderdiğin pm leri görürsün.
id,gonderen,alici,okuma,yanit_id,mesaj,tarih .... gibi bi tablo oluşturup oturum kontrolü yaparak oturum açan kullanıcının id alırsın göndereceği kişinin idsine kayıt girdir. cevap verecek şekilde yapmak istediğin zaman da yanit_id kısmına o mesajın id bastır bu kadar.Burda kilit nokta sql inj için filtrele tüm mesajları ve yetkisiz mesaj okuma için kullanıcı id kontrolü yap
sorguyu
where alici=oturumu kontrol ettiğin kullanıcı id order by tarih burdan gelen mesajları görürsün
where gonderen=oturumu kontrol ettiğin kullanıcı id order by tarih burdan giden mesajları görürsün
gelende mesajı yazdırdıktan sonra mesajın id si yanit_id içersinde varsa altına da yanıt olarak onu bastır geç
-
Nvidia bunu yazdıasiminnesli bunu yazdı
1-2 küçük deneme dışında yapmamistim onlarda da şöyle yaptım PM atılacak kişinin id sine göre mesajın içeriğini kaydediyorum okundu/görüldü=0 sonra bir kişi giriş yaptığında alıcı olarak kendi odası varsa ve okundu 0 ise ye i PM in var diyorum tıklayınca PM e okundu yü 1 yapiyordum ama 5-10 kullanıcıda sıkıntı yok ama yüksek sayılarda sıkıntı olabilir belki
bu kızmı bende yaptım hocam mesele şuki mesela tahribatta eski gönderdiğin mesajlarda duruyor. Bu ksım kafamı çok karıştırdı.
Zaten mesajları sildirmiyoruz ki eski mesajlar duracak gönderen ID ye göre ve tarihe Göre siraliyacaksin