v2.5.2
Giriş yap

Yazıyı Oylama

ferdi
735 defa görüntülendi

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.

Cevap yaz
Cevaplar (3)
ferdi
1627 gün önce

Ş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!';
    }
}
ferdi
1627 gün önce

@mehmet, tamam oylama olayını yapıyorum ancak üyeyi kontrol etme mantığını anlayamadım. Biraz daha detaylı yazabilmen mümkün müdür acaba?

mehmet
1627 gün önce

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