0

我曾尝试使用 ajax 和 mysql 制作点赞系统。点击点赞,添加点赞,再次点赞,点赞最少 1。我想,当我点赞时,它会变回点赞。但是这个,不像直到减号..

这是我的mysql

<?php
    include 'connect.php';
    session_start();
    $ip=$_SESSION['id'];
    if ($_POST['id'])
       {
    $id=$_POST['id'];
    $ip_sql=mysql_query("select id_user from social where track_id='$id' and       id_user='$ip'");
    $count=mysql_num_rows($ip_sql);
    if ($count==0)
    {
        $sql = "update track set jumlah_like=jumlah_like+1 where track_id='$id'";
        mysql_query($sql);
        $sql_in = "insert into social (id_user,track_id) values ('$ip','$id')";
        mysql_query($sql_in);
        $result=mysql_query("select jumlah_like from track where track_id='$id'");
        $row=mysql_fetch_array($result);
        $love=$row['jumlah_like'];

?>  
        <span class="broke_love" align="left"><?php echo $love; ?></span>
<?php
}
else
{
        $sql = "update track set jumlah_like=jumlah_like-1 where track_id='$id'";
        mysql_query($sql);
        //$sql_in = "insert into social (id_user,track_id) values ('$ip','$id')";
        //mysql_query($sql_in);
        $result=mysql_query("select jumlah_like from track where track_id='$id'");
        $row=mysql_fetch_array($result);
        $love=$row['jumlah_like'];
        echo "<span class=on_img align=left>$love</span>";
}   
}
?>
4

2 回答 2

0

我认为您的脚本中缺少某些内容,因为您似乎没有从社交表中删除记录。

但是,您的大多数选择和更新都可以使用一条 SQL 来完成。就像是:-

UPDATE track a
LEFT OUTER JOIN social b ON a.track_id = b.track_id AND id_user='$ip'
SET a.jumlah_like = a.jumlah_like + IF(b.track_id IS NULL, 1, -1)

最好有一个投票表,而不是在社交表上添加和删除记录。每票一排。

于 2013-06-19T15:22:42.323 回答
0

问题是算法导致您的按钮卡在“不同”上。

你的基本条件是:if ($count==0)语句后总是返回大于0$sql_in = "insert into social (id_user,track_id) values ('$ip','$id')"; is run.

因此,您的代码总是卡在执行 else 中,并且不断减少喜欢。

您需要将逻辑更改为更多:

  • 检查喜欢是否存在并为特定用户添加。
  • 如果like 已经存在,删除like 记录。
于 2013-06-19T15:11:51.983 回答