我正在建立一个评级系统,用户可以“喜欢”或“不喜欢”这些东西。 MySQL更新一切正常。问题是我想添加限制,以便用户只能“喜欢”或“不喜欢”一次。基本上,我想用布尔值来做但不能正确编写代码。任何人都可以帮助我使用布尔值?这是代码:
<?php
$tries=0;
if (((isset($_POST['hidden']))&&$tries<2) {
$tries++;
$likes++;
$up = mysql_query("Update videos SET Likes='$likes' WHERE Name='$name'");
}
?>
希望这些信息足够。
答案 0 :(得分:1)
这个答案会告诉你应该达到的目标。我不会写代码来帮助你从现在的位置到此。但我相信它应该会帮助你获得一个好主意。
首先,假设您有一个具有以下结构的表likes
:
user_id INT(11) NOT NULL
video_id INT(11) NOT NULL
PRIMARY KEY(user_id, video_id)
然后,在您的代码中,您可以(我在此示例中使用PDO,因为我不会宽恕使用mysql_*
函数):
$statement = $pdo->prepare('INSERT INTO likes (user_id, video_id) VALUES (:user_id, :video_id)');
$statement->bindValue(':user_id', $userId);
$statement->bindValue(':video_id', $videoId);
try {
// The idea is that, if the user/video combination already exists - the above
// query will throw an exception so you won't execute the code below this line
$statement->execute();
$likes = $pdo->prepare('UPDATE video SET likes = likes + 1 WHERE video_id = :video_id');
$likes->bindValue(':video_id', $videoId);
$likes->execute();
} catch (PDOException $exception) {
// if it was a duplicate key exception, then the likes on the video
// have not been updated and you can print a friendly error message to your
// users here
}
答案 1 :(得分:0)
您需要在用户上存储一些数据点,然后使用PHP会话,cookie和/或任何其他方式通过某些数据点“了解用户”,以便在他们返回时您可以知道他们已经在那里。
您想要记住回来的用户将决定您采取的行动方式。