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");
}