Yazıyı Oylama
Merhabalar, yazılarda oylama mantığını nasıl yapabilirim.
Yani diyelim bir yazım var, şimdi bir kullanıcı gelecek +1 ekleyecek oy sayısı 29 olacak. Sonra diğer 1 kullanıcı eğer -1 yaparsa yani eksi verirse oy sonucu 28'e düşsün istiyorum.
Bununla birlikte bir kere oy kullanan bir daha kullanamasın. Yani adam gelip 5 kere eksiye basamasın. 1 kere bassın istiyorum. Ya eksiye ya da artıya bassın olay bitsin orada.
Bunun mantığı tam olarak nasıl olmalı acaba?
Şimdiden yardımcı olanlara teşekkürler.
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (3)
Şu şekilde yaptım, şu anda çalışıyor bu kod ancak bunu yapmak mantıklı mı yoksa daha kısa bir yolu var mı?
if(isset($_GET['avote'])){
$exe = $db->prepare('SELECT * FROM votes WHERE user_id = :user_id AND post_id = :post_id');
$exe->bindParam(':user_id', $user_id);
$exe->bindParam(':post_id', $post_id);
$exe->execute();
$getExe = $exe->rowCount();
if($getExe < 1){
$vote = $db->prepare('INSERT INTO votes SET post_id = ?, user_id = ?, value = ?');
$ok = $vote->execute([$post_id, $user_id, '+']);
if($ok){
echo 'Başarıyla eklendi!';
}else{
echo 'Hata oldu!';
}
}else{
echo 'daha önce oy kullanmışsın!';
}
}
votes (oy) diye bir tablo oluştur isim önemli değil.
tablo yapısı
id | post_id | begenen_id
1 1 1
2 1 2
bu şekilde olduğunu düşün.
where ile count edersin where post_id 1 şeklinde 1 idli postu beğenenleri sayar sana.
daha sonra kullanıcının id'sini alırsın veritabanında sorgulatırsın yok ise insert edersin. var ise hiçbir şey yapmazsın beğeni sayısı sabit kalır