php友好系统
如果有人能帮我解决这个问题,我会非常感激的 我正在制作一个网站,我希望注册用户能够将彼此添加为朋友 此人必须“邀请”另一个注册用户(在数据库上)。另一个人将收到某种通知。如果该人忽略了通知,则不会发生任何事情,当他/她批准时,他们是朋友 现在我对我将要使用的表格有了一个想法:php友好系统,php,sql,Php,Sql,如果有人能帮我解决这个问题,我会非常感激的 我正在制作一个网站,我希望注册用户能够将彼此添加为朋友 此人必须“邀请”另一个注册用户(在数据库上)。另一个人将收到某种通知。如果该人忽略了通知,则不会发生任何事情,当他/她批准时,他们是朋友 现在我对我将要使用的表格有了一个想法: +----------------------------------------+ | Requests | +------------------------
+----------------------------------------+
| Requests |
+----------------------------+-----------+
| id | user_from | user_to | status |
+----+-----------+-----------+-----------+
| | | | |
| | | | |
| | | | |
| | | | |
+----------------------------+-----------+
正如我所说,这只是我想使用的一个想法,但我不知道当我有一个链接添加一个人作为朋友时,php中的代码会是什么
我认为管理员应该批准发送的请求以及用户是否批准。我不知道那张桌子会是什么样子
我考虑使用内部连接将两个用户作为朋友“连接”。但是,我还是不完全确定该怎么做。这会出现在我的php中吗?比如说friends.php
SELECT name, email FROM users
INNER JOIN friends ON users.id = friends.user.id WHERE users.id = 1
正如我所说,我有一个很好的想法做什么,但当谈到编码它,我不完全知道如何做到这一点
谢谢 您应该有一个简单关联user.id的关系表。
+-----------------------------------------+
| relationships |
+-----------------------------------------+
| id | user_id1 | user_id2 | status |
+----+-----------+-------------+----------+
| | | | |
| | | | |
| | | | |
| | | | |
+------------------------------+----------+
其中user_id1和user_id2都是user.id。注意:我可能会将status设置为enum,类似于“待定、拒绝、朋友、敌人”。我最初想使用bool,但如果以后还有其他想要的状态呢?比如说,你可能会记录破碎的友谊,或者其他关系
然后您只需执行一个multiple where子句来确定朋友:
WHERE(user\u id=:id或friend\u id=:id)和status='friend'
您的实现可能会有所不同-有多种方法可以提供您想要的功能,即:
SELECT * FROM friends WHERE user_id = $user_id
SELECT * FROM friends WHERE user_id = $user_id OR friend_id = $user_id
SELECT * FROM friend_requests WHERE (user_from = $user_id OR user_to = $user_id) AND status = "COMPLETED"
我不认为这是什么…最好保持请求与实际好友列表分开。审批通过后,您可以删除关联的请求记录,并在友谊表中创建一条新记录,以显示友谊为“活动”。好的,但状态将是什么?e、 g.待定。。。或批准?甚至不需要id字段。PK可以是(用户id,朋友id)Ok耶是真的。。。但我仍然想知道批准请求的某种状态应该在哪里??或者那是一张和朋友分开的桌子?@MarcB那是一个很不靠谱的谎言,我的朋友。有了这个id,就可以很容易地用一个id作为目标。有很多好的工具不能处理多个主键。当您强制执行多键时,id使其非常易于处理。“好的”工具不能处理复合键,根据定义是“不好的”。拥有一个单独的id字段可以创建多个重复的用户/朋友对。您可以在这两个字段上放置一个唯一的复合键,但随后您基本上又重新创建了一个PK,而您所谓的“好”工具将再次自我呕吐。