我正在创建一个网站,允许用户查看所需的“团队”,然后只需点击一个按钮即可加入他们。
我的用户表包含: user_id,user_name,team_id
然后,我的团队表包含: team_id,team_name,team_players
如何让用户加入群组,每个用户一次也只能在一个团队中。
答案 0 :(得分:1)
首先应将team_id字段作为外键添加到users表中,并允许它为NULL。
然后,您将以html形式显示团队名称,每个团队都有一个单选按钮。
在PHP文件(应该设置为表单的操作)中,根据您为每个单选按钮分配的值创建一个if语句。在每个if块中,执行一个sql UPDATE语句,该语句将相应的group_ID添加到正确的用户实例。
答案 1 :(得分:1)
如果您希望每个用户能够加入多个团队,并且每个团队拥有多个用户,那么您需要一个“联接表”。
表 teams_users 将包含 team_id , user_id 。您可以在team_id,user_id上创建复合主键(防止用户两次加入同一个团队)。
然后你可以得到一个团队:
SELECT * FROM users t1 right join teams_users t2 ON t1.team_id = t2.team_id WHERE t2.team_name = 'the rascals'
即使您只希望玩家一次加入一个团队,您仍可能希望使用联接表,以防您改变主意。这将非常容易。要仅为每个用户允许一个团队,请在连接表中对 user_id 设置唯一约束。如果您以后决定要允许多个团队,则只需删除该约束。
如果用户尝试“加入团队”操作,您只需检查连接表中是否存在user_id。
SELECT * FROM teams_users WHERE user_id = $user_id
如果确实存在,则检索其匹配的 team_id 并告诉他们,“抱歉,您已经在团队中成为流氓”。如果您想加入另一个团队,则必须离开该团队。如果他们放弃他们的团队,你只需:
DELETE from teams_users WHERE user_id = 5
如果他们添加了一个团队,您只需:
INSERT INTO teams_users ($team_id, $user_id) #// (assuming PHP variables).
INSERT查询仅在尚未加入团队时才有效。如果他们是你会收到一条错误信息。您还可以查看“INSERT ON DUPLICATE KEY UPDATE ...”查询。但我建议反对,因为你想在改变团队之前警告用户。