Php 喜欢一篇文章的按钮实际上喜欢所有的文章

Php 喜欢一篇文章的按钮实际上喜欢所有的文章,php,javascript,mysql,css,variables,Php,Javascript,Mysql,Css,Variables,我创建了一个“喜欢”和“不喜欢”按钮,但当我单击“喜欢”按钮时,它会喜欢我的所有帖子,下面是我的代码: $sql_posts = mysql_query("SELECT * FROM post WHERE mem_id='$id' ORDER BY post_date DESC LIMIT 30"); while($row = mysql_fetch_array($sql_posts)){ $postid = $row["id"]; $poster_id = $row["mem_id"];

我创建了一个“喜欢”和“不喜欢”按钮,但当我单击“喜欢”按钮时,它会喜欢我的所有帖子,下面是我的代码:

$sql_posts = mysql_query("SELECT * FROM post WHERE mem_id='$id' ORDER BY post_date DESC LIMIT 30");

while($row = mysql_fetch_array($sql_posts)){

$postid = $row["id"];
$poster_id = $row["mem_id"];
$post_body = $row["post_body"];
$notokinarray = array("fucker", "ass", "shit", "fuck", "fucking", "damn", "asshole", "cunt", "damnit");
$okinarray   = array("******", "***", "****", "****", "*******", "****", "*******", "****", "******");
$post_body = str_replace($notokinarray, $okinarray, $post_body);
$post_body = ($activeLinkObject -> makeActiveLink($post_body));
$post_date = $row["post_date"];
$convertedTime = ($myObject -> convert_datetime($post_date));
$whenPost = ($myObject -> makeAgo($convertedTime));
$device = $row["device"];
$postlikes = $row["likes"];
$postlikers = $row["likers"];
$postdislikes = $row["dislikes"];
$postdislikers = $row["dislikers"];
类似函数(这就是问题所在)

$visitor=$\u会话['id'];
如果(isset($_POST['likeIt'])){
如果($postlikers!=“”){
$postlikers=“$postlikers,$visitor”}其他{$postlikers=“$visitor”;
$UpdateArrayLikers=mysql_query(“更新post-SET-likers='$postlikers',其中id='$postid')或die(mysql_-error());
$UpdateArrayLikers=mysql_query(“更新post SET likes=likes+1,其中id='$postid')或die(mysql_error());
标题(“location:profile.php?id=$id”);
}
}
//内部sql查询
$sql_mem_data=mysql_query(“从myMembers中选择id、用户名、姓氏,其中id='$poster_id'限制1”);
而($row=mysql\u fetch\u数组($sql\u mem\u data)){
$uid=$row[“id”];
$name=$row[“用户名”];
$fname=$row[“firstname”];
$lname=$row[“lastname”];
$commentForm='1
';
如果(isset($_POST['dislikeIt'])){
$thisPostDislikers=爆炸(“,”,$postdislikers);
if(!in_数组($visitor,$thisPostDislikers)){
如果($postdislikers!=“”){$postdislikers=“$postdislikers,$visitor”;}其他{$postdislikers=“$visitor”;}
$UpdateArrayDislikers=mysql_query(“更新post-SET-dislikers='$postdislikers',其中id='$postid')或die(mysql_-error());
$UpdateArrayDislikers=mysql_query(“更新post SET dislikes=dislikes+1,其中id='$postid'))或die(mysql_error());
标题(“location:profile.php?id=$id”);
}
}
如果($id){
$thisPostLikers=爆炸(“,”,$postlikers);
if(在数组中($visitor,$thisPostLikers)){
$likePost=true;
}
}
如果($id){
$thisPostDislikers=爆炸(“,”,$postdislikers);
if(在数组中($visitor,$thisPostDislikes)){
$dislikePost=true;
}
}
如果($fname!=“”){$name=“$fname$lname”;}//(我在系统中添加了用户名,您不需要这一行)
///////显示图片的机制。查看他们是否上传了图片//////////////////////////
$ucheck_pic=“members/$uid/image01.jpg”;
$udefault_pic=“members/0/image01.png”;
如果(文件存在($ucheck\u pic)){
$post_pic='';
}否则{
$post_pic='';
}
如果(!$likePost)&(!$dislikePost)){
$postDisplayList.='
“.$whenPost。”
通过“.$device”。
“.$post_body” “$postlikes.”人们喜欢这样。 “.$commentList。” “.$commentForm。” '; }else if(!$likePost)&($dislikePost)){ $postDisplayList.=' “.$whenPost。” 通过“.$device”。
“.$post_body” “.$commentList。” “.$commentForm。” '; }如果(!$dislikesPost)和($likesPost)){ $postDisplayList.=' “.$whenPost。” 通过“.$device”。
“.$post_body” “$postlikes.”人们喜欢这样。 “.$commentList。” “.$commentForm。” '; }否则{ $postDisplayList.=' “.$whenPost。” 通过“.$device”。
“.$post_body” “.$postlikes.”人们喜欢这样。.$commentList.” '; } } }

第一个while循环中的like函数使用户喜欢所有帖子。

您可以通过海报id获得所有帖子。 然后循环浏览这些帖子。 然后在循环内部,在第一次while循环之后,您再次通过myMembers表使用poster id获取用户数据。 在第二个while循环中,更新当前post id的数据

由于第一个while循环遍历所有帖子,所以在第二个内部while循环中更新每个帖子id的详细信息

所以,我认为问题在于第一个外部while循环的SQL查询。或者可能是你错过了什么,你需要包括在内

                $UpdateArrayLikers = mysql_query("UPDATE post SET likers='$postlikers' WHERE id='$postid'") or die (mysql_error());
                $UpdateArrayLikers = mysql_query("UPDATE post SET likes=likes + 1 WHERE id='$postid'") or die (mysql_error());
                header("location: profile.php?id=$id");
里面

if ($postlikers != "") { $postlikers = "$postlikers,$visitor"; } else { $postlikers = "$visitor"; }
条件

编辑:如果只有$postlikers不是空的,您应该为likers和likes更新post表。像这样的

if ($postlikers != "") { 

 $postlikers = "$postlikers,$visitor"; } else { $postlikers = "$visitor"; 
 $UpdateArrayLikers = mysql_query("UPDATE post SET likers='$postlikers' WHERE id='$postid'") or die (mysql_error());
 $UpdateArrayLikers = mysql_query("UPDATE post SET likes=likes + 1 WHERE id='$postid'") or die (mysql_error());
                    header("location: profile.php?id=$id");

}

在第二个代码段中,
$postid
在哪里设置?$postid被声明在更高的位置,我实际上忘记了这段代码,感谢您的评论。因此,我是否应该在查看编辑时将用于添加喜欢的if函数移到第一个代码段中。我认为您可以将这个“if”条件块移出第二个内部“while”循环(实际上是
if ($postlikers != "") { 

 $postlikers = "$postlikers,$visitor"; } else { $postlikers = "$visitor"; 
 $UpdateArrayLikers = mysql_query("UPDATE post SET likers='$postlikers' WHERE id='$postid'") or die (mysql_error());
 $UpdateArrayLikers = mysql_query("UPDATE post SET likes=likes + 1 WHERE id='$postid'") or die (mysql_error());
                    header("location: profile.php?id=$id");

}