Facebook tarzı durum beğenme sistemi sorunu

yumuklusucurta (89) 7 yıl önce sordu

Merhaba arkadaşlar ben facebook benzeri bir web sitesi yazıyorum.Fakat beğenme sistemine gelince takıldım kaldım.1. kulllanıcı ile Beğen yazısına tıklayınca Beğenmekten vazgeç yazıyor buraya kadar herşey tamam fakat 2. kullanıcı ile girip beğen yazısına tıklayınca 1. kullanıcıda Beğenmekten vazgeç yazısı tekrar beğen oluyor.Kodlarımı aşağıya bırakıyorum.Eğer sorun kodlardaysa yeniden kodlarım bildiğiniz video vs. varsa link bırakırsanız çok memnun olurum

anasayfa.php

<?php
$resimsor = $db->prepare("select * from paylasim ORDER BY post_id DESC");
$resimsor->execute(array());
$resimfet = $resimsor->fetchAll(PDO::FETCH_ASSOC);

foreach($resimfet as $resimcek){
    $post_id = $resimcek["post_id"];
    $yukleyen_id= $resimcek["yukleyen_id"];
?>
<div class="post"  value="<?php echo $resimcek["post_id"] ?>">
<div class="gonderen">
<img src="img/deneme.png" width="80px" height="80px" class="yuvarlak gresim">
<a href="profil.php?getuserid=<?php echo $yukleyen_id; ?>" class="pyazi">Deneme kişi</a></br>
<a href="profil.php?getuserid=<?php echo $yukleyen_id; ?>" class="tarih">03:06:2017</a>
<?php if($resimcek["yukleyen_id"] == $ben){?>
<img src="img/sil.png" class="sil">
<?php }else{}?>
</div>

<img src="paylasimlar/<?php echo $resimcek["postresim_name"]?>" class="resimboyut">
<?php


$sorgu = $db->prepare("SELECT COUNT(*) FROM begen where like_post='$post_id'");
$sorgu->execute();
$say = $sorgu->fetchColumn();
$begenisayi = $say;


$asorgu = $db->prepare("SELECT COUNT(*) FROM comment where com_post='$post_id'");
$asorgu->execute();
$asay = $asorgu->fetchColumn();
$yorumsayi = $asay;


 ?>
<div class="likebutons">
<li class="lyazi"><?php echo $begenisayi; ?> Beğenme  < - - - - -  >   <?php echo $yorumsayi; ?> yorum</li>

    <?php 
     $likemquery = $db->query("SELECT * FROM begen where like_post='$post_id' ", PDO::FETCH_ASSOC);
if ( $likemquery->rowCount() ){
     foreach( $likemquery as $likemrow ){

    $begenenler = $likemrow["like_kisi"];
    $likeposta = $likemrow["like_post"];


     }
};

if($begenenler == $ben and $likeposta == $post_id){
?>
<a href="javaScript:;" class="lkbtn bgnm" id="<?php echo $post_id ?>">Beğenmekten Vazgeç</a>
<?php }else{ ?>
<a href="javaScript:;" class="lkbtn like" id="<?php echo $post_id ?>">Beğen</a>    
<?php } ?>

<a href="javaScript:;" class="lkbtn yrmbtn" id="<?php echo $post_id ?>">Yorum Yap</a>
<a href="javaScript:;" class="lkbtn" id="<?php echo $post_id ?>">Paylaş</a>

</div>
<div class="yorumlar" >

<input type="text" name="yorumarea" class="yorumarea" id="<?php echo $post_id ?>">
<input type="submit"  id="<?php echo $post_id ?>" class="yorumgonder" value="Gönder">
<?php
$comsor = $db->prepare("select * from comment where com_post='$post_id' ORDER BY com_post DESC");
$comsor->execute(array());
$comfet = $comsor->fetchAll(PDO::FETCH_ASSOC);
foreach($comfet as $comcek){
?>
<div class="comments">

<img src="img/profilresmi.jpg" class="yorumresim">
<li class="yorumisim">Ad soyad</li>
<li class="yorumyazi"><?php echo $comcek["comment"]; ?></li>

</div>
<?php }; ?>
</div>

</div>
<?php } ?>

</div>

Begen.php

<?php 

include("config.php");
session_start();
        $ben = $_SESSION["suye_id"];

$v = $db->prepare("insert into begen set 

         like_post=?,
         like_kisi=? 


");


if($_POST){
    $likepost = $_POST["likea_id"];
$x = $v->execute(array($likepost, $ben));    
}
?>

like.js

$(function(){

        $("a.like").click(function(){
    var likea_id = $(this).attr('id');   
    var deger   = "likea_id="+likea_id;
    $.ajax({
        type: "POST",
        url: "begen.php",
        data: deger,
        success: function(sonuca){
        }
                            
    });    
});
    });

MYSQL veritabanı ise 

Tablo:begen

sütunlar:

likde_id

like_post

like_kisi

 

toprak34 7 yıl önce

@alattin abi sana yardımcı olacaktır :)

Toplam 2 cevap


alattin (17127) 7 yıl önce cevapladı

Php bilgim fazla yok @toprak34 fakat hatanın nerede olduğunu söyleyebilirim.

SQL sorgularında Where kriterine Kullanıcı ID'yi de eklemelisin. Yani

SELECT * FROM begen where like_post='$post_id' "

Gibi sorgularında  AND  user_id=='$user_id' gibi ek bir kriter olmalı.

Ayrıca veritabanı yapısında begen tablosunda user_id var mı kontrol et.

Yani o sayfayı hangi kullanıcı beğenmiş bunun bilgisini tutuyor musun?  Sende olan kullanıcı kriteri vermediğin için "global bir beğeni" söz konusu oluyor.

yumuklusucurta 7 yıl önce

Son olarak bu pdo koduna nasıl 2 tane koşul verebilirim ?

yumuklusucurta 7 yıl önce

$likemquery = $db->prepare('SELECT * FROM begen WHERE like_post = :like_post'); $likemquery->execute(array(':like_post' => $post_id)); foreach ($likemquery as $likemrow) { },

yumuklusucurta (89) 7 yıl önce cevapladı

Hiç kimsenin bu konu hakkında bilgisi yok mu ?

eğer elinizde hazır bir sistem varsa onu da atabilirsiniz.İnceleyebileceğim herhangi bir kaynak vs. varsa link felan da atabilirsiniz.