我为我的网站创建了一个简单的upvote系统,但有一个小错误,它无法捕获我需要显示的所有ID。问题是我在数据库中为用户投票的每个项目的ID都有多个重复值。 我创建了一个单独的投票表,以便在投票后更新箭头颜色。
下面是显示结果的代码,它处于foreach循环中:
if(isset($_SESSION['user_session'])){
if(($row['voteLikes_topic'] == $row['topic_id']) && ($row['voteLikes_user'] == $_SESSION['user_session'])){
var_dump($row['voteLikes_topic']);
$returnValues .= '<a href="#" id="upVoteColorChangeID'.$row['topic_id'].'" class="upVoteArrow fullClickLink" style="color:#bd2204;" onclick="upVoteIncrementValue('.$row['topic_id'].');"><i class="fa fa-arrow-up"></i></a> ';
}else{
$returnValues .= '<a href="#" id="upVoteColorChangeID'.$row['topic_id'].'" class="upVoteArrow fullClickLink" onclick="upVoteIncrementValue('.$row['topic_id'].');"><i class="fa fa-arrow-up"></i></a> ';
}
}
以下是数据库中用于投票结果的列:
以下是查询:
$query = "SELECT
count(replies.reply_topic) as replyCount,
topics.topic_id,
topics.topic_subject,
topics.topic_date,
topics.topic_cat,
topics.topic_picture,
topics.topic_creator,
topics.topic_likes,
users.user_id,
users.username,
profile.profile_id,
profile.profile_pictureMain,
profile.profile_users,
savelink.saveLink_id,
savelink.saveUser_id,
savelink.link_id,
votelikes.voteLikes_user,
votelikes.voteLikes_topic,
votelikes.voteLikes_hot,
votelikes.voteLikes_cold
FROM
topics
LEFT JOIN
users
ON
topics.topic_creator = users.user_id
LEFT JOIN
replies
ON
replies.reply_topic = topics.topic_id
LEFT JOIN
profile
ON
profile.profile_users = users.user_id
LEFT JOIN
savelink
ON
savelink.link_id = topics.topic_id
LEFT JOIN
votelikes
ON
votelikes.voteLikes_topic = topics.topic_id
GROUP BY
topics.topic_id
ORDER BY
topics.topic_date DESC
LIMIT ?, ?
";
这是查询显示的内容(为清楚起见)
所以现在发生的事情是,一旦它为41的“ voteLikes_user” ID抓住了66的“ voteLikes_topic”值,那么如果我以6的voteLikes_user ID登录,并且在“列”的列中也有一个值表决投票表主题66,它将不会在数据库中显示第二个值。
简而言之:由于'voteLikes_topic'值为'66'首先是'voteLikes_user'值为'41',因此对于表决投票用户值6而言,voteLikes_topic值为66不会显示。
我知道这是一个简单的查询问题,但找不到。预先感谢。