在我的like_dislike表中,我有3列prod_id、user_id和like_dislike。我在下面的代码中插入0表示不喜欢,1表示喜欢。如果没有具有相同like_disike.it的特定prod_id和user_id的条目,如果用户从喜欢变为不喜欢,反之亦然。但如果用户喜欢他喜欢的任何prod_id,它将输入重复的值。这是我的密码。
<?php
session_start();
require('config.php');
$pid=$_REQUEST['prod_id'];
$uid=$_SESSION['uid'];
$act=$_REQUEST['act'];
if ($uid=='') {
header('location:login.php');
}
else
{
$like_sql=mysql_query("SELECT COUNT(*) FROM like_dislike_tbl WHERE
prod_id='".$pid."' AND user_id='".$uid."' AND like_dislike=1");
$like_count=mysql_result($like_sql, 0);
$dislike_sql=mysql_query("SELECT COUNT(*) FROM like_dislike_tbl WHERE
prod_id='".$pid."' AND user_id='".$uid."' AND like_dislike=0");
$dislike_count=mysql_result($like_sql, 0);
if($act == 'like'): //if the user click on "like"
if($like_count == 1){
header('location:'. $_SERVER['HTTP_REFERER']);
}
if(($like_count == 0) && ($dislike_count == 0)){
mysql_query("INSERT INTO like_dislike_tbl(prod_id,user_id,like_dislike)
VALUES('".$pid."','".$uid."',1)");
}
if($dislike_count == 1){
mysql_query('UPDATE like_dislike_tbl SET like_dislike = 1 WHERE
prod_id = "'.$pid.'" and user_id ="'.$uid.'"');
}
header('location:'. $_SERVER['HTTP_REFERER']);
endif;
if($act == 'dislike'): //if the user click on "dislike"
if($dislike_count == 1){
header('location:'. $_SERVER['HTTP_REFERER']);
}
if(($like_count == 0) && ($dislike_count == 0)){
mysql_query("INSERT INTO like_dislike_tbl(prod_id,user_id,like_dislike)
VALUES('".$pid."','".$uid."',0)");
}
if($like_count == 1){
mysql_query('UPDATE like_dislike_tbl SET like_dislike = 0 WHERE
prod_id = "'.$pid.'" and user_id ="'.$uid.'"');
}
header('location:'. $_SERVER['HTTP_REFERER']);
endif;
}
?>
把你的建议给我。提前说。如果你不懂我的语言。无论你不懂什么,我都会评论。
我的like_dislike_tbl是
------------------------------------------
| prod_id | user_id | like_dislike |
------------------------------------------
| 8 | 20 | 0 |
------------------------------------------
| 9 | 20 | 0 |
------------------------------------------
| 8 | 20 | 0 |
------------------------------------------
| 9 | 20 | 0 |
------------------------------------------
| 10 | 20 | 1 |
------------------------------------------
| 10 | 20 | 1 |
------------------------------------------
更改代码。。。。
$dislike_count=mysql_result($like_sql, 0);
有了这个。。。。
$dislike_count=mysql_result($dislike_sql, 0);
如果表已经有重复项,COUNT(*)
可能会返回多个1。所以改变
if (like_count == 1) {
至:
if (like_count >= 1) {
并且类似地用于CCD_ 2。
顺便说一句,你可以通过一个查询获得喜欢和不喜欢的计数:
SELECT SUM(like_dislike = 1) AS like_count, SUM(like_dislike = 0) AS dislike_count
FROM like_dislike_tbl
WHERE prod_id = $pid AND user_id = $uid