阻止用户注册两次活动

时间:2015-01-18 21:07:27

标签: php mysql

首先,我使用MYSQL,因为我所在大学的服务器没有为{mySQLI'更新servers

Table

上面是表格,测试将参加所有活动,但我不想测试再次参加活动。

if(isset($_REQUEST['register'])!=''){

$user = $name;
$eventTitle = $_REQUEST['select'];

$result = mysql_query("SELECT Event FROM attend where Event != '$eventTitle'"); // run the query and assign the result to $result
while($table = mysql_fetch_array($result)) { // go through each row that was returned in $result

        echo $table[0];
        if($table[0] == $eventTitle)
        {
            echo "dont add";
        }
        else
        {
            echo"add";
        }
}

/*$sql="INSERT INTO `assignment`.`attend` (`User`, `Event`) VALUES ('$user', '$eventTitle')";

$res=mysql_query($sql);

 if($res)
 {
    Echo "Record successfully inserted";
    //header("location: myTickets.php");
 }
 Else
 {
    Echo "There is some problem in inserting record";
     //echo $name;

 }

我试图在“事件”中循环播放'行以查看其中的值是否等于所选值。但由于它是一个while循环,它将继续循环。

伪代码

if(the value selected is == the value in the table && and the name is == to data in the User row then do not add, else add;

4 个答案:

答案 0 :(得分:2)

不要在PHP中这样做。而是在userevent上创建一个UNIQUE键(请参阅here如何操作)。这就是两个列上的一个键。这意味着这两列中的任何一对值只能出现一次。但是,用户可以参加多个活动,多个用户可以参加活动。

像这样你可以让你的PHP更小。

此外,这个while循环不会继续循环:当没有结果时它就会结束。

另一个想法,更多来自UX的观点,是让已经订阅了事件的用户不可能再次订阅 - 例如将订阅按钮更改为取消订阅按钮,或者完全删除它。但是,请始终确保即将开始调整请求的用户仍然可以再次订阅 - 例如,通过添加UNIQUE键。

答案 1 :(得分:0)

获取带有事件的行,如果得到结果。然后添加。

答案 2 :(得分:0)

他们不会因为您的搜索查询将事件排除在事件!=' $ eventTitle'

答案 3 :(得分:0)

在组合用户/事件上创建唯一索引(这也是一个完美的主键)。 在碰撞中,您将获得唯一的约束违规