PHP对投票的限制

时间:2013-03-12 15:20:17

标签: php mysql

我正在建立一个评级系统,用户可以“喜欢”或“不喜欢”这些东西。 MySQL更新一切正常。问题是我想添加限制,以便用户只能“喜欢”或“不喜欢”一次。基本上,我想用布尔值来做但不能正确编写代码。任何人都可以帮助我使用布尔值?这是代码:

<?php
$tries=0;
if (((isset($_POST['hidden']))&&$tries<2) {
    $tries++;
    $likes++;
    $up = mysql_query("Update videos SET Likes='$likes' WHERE Name='$name'");
}
?>

希望这些信息足够。

2 个答案:

答案 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和/或任何其他方式通过某些数据点“了解用户”,以便在他们返回时您可以知道他们已经在那里。

您想要记住回来的用户将决定您采取的行动方式。