反馈系统仅允许每个用户1个

时间:2014-06-17 00:42:24

标签: php mysql

我正在网站上实施反馈系统,但只允许用户向其他用户提供反馈一次。

我能想到这样做的唯一方法是创建另一个数据库,通过跟踪id来显示谁留下了谁的反馈,但我确定有一种更简单的方法来实现相同的结果,我只是没有看到它?或者我通过将信息放入另一个数据库来计划它的最初方式是最佳解决方案吗?

我到目前为止的代码是:

<?php
    if(isset($_POST['good'])) {

        $thumbsUp = mysql_query("UPDATE users SET good_feedback = '". $newGood1 ."' WHERE `username` = '". $profileUser ."'");

    if($thumbsUp) {
            echo 'You have left feedback';
        }
    }
    if(isset($_POST['bad'])) {

        $thumbsUp = mysql_query("UPDATE users SET bad_feedback = '". $newGood2 ."' WHERE `username` = '". $profileUser ."'");

    if($thumbsDown) {
        echo 'You have left bad feedback';
        }
    }

    if (logged_in() == true && $user_data['username'] != $profile_data['username']) {
        echo '<p style="font-size: 17px; margin-left: 22%;">Leave Feedback: </p>';
        echo '<form method="post" style="margin-left: 8%;">
            <button class="btn-u" name="good">Good Feedback</button>
            <button class="btn-u" name="bad">Bad Feedback</button>
            </form>';

    } else {
        echo 'you cannot leave feedback for yourself!';
    }

?>

提前感谢您的任何答案。

请注意:我知道上面的代码对SQL注入是开放的

1 个答案:

答案 0 :(得分:1)

如果您想设置一个约束条件为&#34; A&#34;只能给&#34; B&#34;曾经,那么你可以用一个独特的索引来做到这一点。以下是您可以做的非常简化的形式:

create table feedback (
    FromUser int,
    ToUser int,
    Message varchar(255)
);

create unique index idx_feedback_from_to on feedback(fromuser, touser);