content="0"
我有这个代码在like表中存在post id时更改like按钮上的图标图像但是当表中没有值时,else语句不起作用并且不显示图像。我试图添加'&& !== null'to if condition但它也不起作用。
答案 0 :(得分:0)
在while循环上缺少右括号:
while($like_info = mysqli_fetch_assoc($like_result)){
if($post_info['id'] == $like_info['post_id'])
{ echo ' src="img/like/like_active.png"';}
else{echo ' src="img/like/like_dark.png"';}
}?>>
因为以下是常见的: SRC = “IMG /像/像”
你可以从if语句中删除它,只需在active和dark.png状态之间切换。
答案 1 :(得分:0)
如果用户的like表中没有数据,则while
循环无需迭代。这意味着if
条件永远不会被执行。
还值得注意另一个问题:看起来你的while
循环会迭代所有帖子的所有结果。如果您的用户喜欢其他帖子(除了正在显示的帖子之外),那么您的else
子句将被多次执行,为您提供src
标记中的多个img
属性(大部分或全部他们指的是like_dark.png
)。
理想情况下,您需要做的是让您的数据库查询仅搜索用户对所显示帖子的ID的喜欢。这样你根本不需要while
循环。您只需要检查是否找到了任何结果。如果是,请输出like_active.png
,否则输出like_dark.png
。
如果您因某种原因无法修改查询(或者如果您想在页面上显示多个帖子时避免多次查询),则您的循环将需要遍历每条记录并只需设置一个布尔值变量为true
,如果它看起来与当前帖子ID匹配。 在 while
循环之后,检查if
条件下的布尔变量,然后仅输出src
属性。这样,无论您迭代了多少条记录,您都只会输出一个src
属性。