Giriş yap
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.

mehmet
273 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

ferdi
273 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?

ferdi
273 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!';
    }
}

Nasıl akıllıca soru sorulur?
Daha hızlı ve kaliteli cevaplar almak için önce nasıl soru sorulacağını bilmeniz gerekir. Eğer bilmiyorsanız bu yazı serisini okuyun.

Cevap yaz

Günlük Film Tavsiyesi