Spike Like ve dislike her paylaşıma yapılıyor diye varsayılan bir yargıda bulunuyor ve devam ediyorum.
Bir paylaşım yapıldı ve paylaşımın Id numarası 1 olsun. Kullanıcı like atmak istedi. Kullanıcının Id numarası ise 5 olsun.
Bunlar tamamiyle varsayım.
Kullanıcı gönderiye gelip like attığında reaction(bu ismi öylesine söyledim.) adında bir tabloya insert
etmen gerekir. Bu like insert
işlemini yapmadan önce kontrolü yapman gerekir. Şimdi detaylı örnek vereyim.
Reaction tablosu(like, dislike ve diğer reaksiyonlar...):
Id PostId KullaniciId ReactionTipi
1 1 5 "like"
olarak bir verinin girildiğini varsayalım. Kullanıcı tekrar gelip like tuşuna tıklamak istediğinde biz bu tabloda şöyle bir sorgu gerçekleştireceğiz;
select * from reaction where KullaniciId=5 and PostId=1
eğer kayıt sayısı 1 ise;
if (reaction["ReactionTipi"] == "like")
{
echo "Zaten beğenilmiş, beğenmekten vazgeçme kodunu buraya";
} else {
echo "Adam önceden like haricinde bir reaksiyon göstermiş. O zaman güncelleme yapılacak sadece";
///aşağıdaki SQL sorgusu ile ilgili alanı güncelleyeceğiz.
update reaction set ReactionTipi="like" where kullaniciId=5 and PostId=1
}
bu şekilde like işaretlemiş ise like işlemini geri aldık. İşaretlememiş ise dislike (veya başka reaksiyon -şaşırma gibi-) yerine like yazdırdık.
eğer kayıt sayısı 0 ise;
direkt insert
işlemini gerçekleştiriyoruz.