【发布时间】:2017-10-25 12:34:46
【问题描述】:
我正在制作一个包含文章列表、另一个用户表和另一个用户喜欢的文章的简单表格:
文章表:
id, userId, title, article, date
用户表
id, name, email, last_login
喜欢表:
id, user_id, article_id, dateLiked
我当前的查询:
SELECT
articles.id as aid, articles.userId, articles.title, articles.article,
likes.user_id as uLiked, likes.article_id as articleLiked
FROM articles
LEFT JOIN likes ON articles.id = likes.article_id
WHERE userId= "10"
所以,我想获取用户的所有文章,然后在 while 循环中,我检查登录的用户是否与喜欢的行匹配,如果匹配则显示它是活动的。如果不是,它仍然显示为不活动。如果他们正在查看其他人的文章,同样的事情。他们应该看到所有文章,但他们链接的文章应该是活跃的。
while($row = mysqli_fetch_array($query, MYSQLI_ASSOC)){
if($row['uLiked'] == 30 && $currentArticleID = $row['articleLiked']){ $status = 'active'; } else { $status = 'inactive'; }
echo '<div class="'.$status.'">'.$row['title'].'</div>';
}
问题是,当文章被点赞时,帖子会显示两次,但两次都处于活动状态。我尝试了分组,但是当它分组时,它会按我想要的方式显示文章一次,但没有任何活动。
希望我解释正确,但我真的被困在这里。有什么想法吗?我可能接近这个错误..
【问题讨论】:
-
编辑您的问题并提供示例数据和所需结果。此外,您所写的查询也不起作用,因为
user_id在WHERE子句中不明确。
标签: php mysql sql while-loop