【问题标题】:Html and php mysql friends system [closed]Html和php mysql好友系统[关闭]
【发布时间】:2011-08-30 11:05:24
【问题描述】:

好的,我需要帮助。我需要在我的网站上有一个朋友系统,但我的服务器上不会有很多表格。 在这个朋友系统中,您可以发送请求,他们可以接受或拒绝? 我可以让朋友发送请求,但我需要远离所有用户的朋友?

所以我可以和我网站上的所有朋友聊天,如果他们不是我的朋友,我就不能和他们聊天吗?

【问题讨论】:

  • 您的问题到底是什么?如果你不熟悉 PHP 和数据库设计,告诉你如何构建“朋友系统”是没有意义的。
  • 对我来说,这听起来像是“我不知道 hpw t0 用 PhP 做这些事情,所以你能不能假装为我做这件事?谢谢ssssssssssss”
  • 如果您是 10 天前开始的,那么您还有很长的路要走。
  • @Ryan 说真的,这个问题写得非常糟糕和广泛。请考虑修改它以更具体地说明您需要帮助的内容。如果需要,请打开多个有针对性的问题,而不是一个非常广泛的问题。

标签: php mysql database


【解决方案1】:

将其实现为有向图,即有一个表示用户之间链接的表(请原谅我对将 UML 应用于数据库设计的理解不佳):

--------------------------------------
| Relation                           |
--------------------------------------
| id : UUID PRIMARY_KEY              |
| from : UUID INDEX(RELATION_FROM)   |
| to : UUID INDEX(RELATION_TO)       |
| status : ENUM("PENDING", "FORMED") |
--------------------------------------

让代码为它工作应该很简单(如果不是,你可能需要先学习 PHP 和 MySQL ;)。


至于您需要执行的查询,它们相当简单:

SELECT * FROM relations WHERE from = ? AND status = "FORMED"; -- for getting all the friends of a user
SELECT * FROM relations WHERE from = ? AND status = "PENDING"; -- for getting all the pending friends of a user

【讨论】:

  • 我相信您的查询不完整。如果用户 A 朋友 B,并且 B 接受,那么当我们寻找 B 的朋友时,我们不会找到 A。因为 B 不在 from
  • 我假设它们是单向关系(Twitter 太多),但我想您可以修改查询以查找任一方向的链接。但话又说回来,这种关系看起来很有趣。
【解决方案2】:

我会在 mysql "Friends" 中创建 1 个表 每个好友请求将 INSERT INTO Friends 2 个用户(请求者和被请求者),然后您可以有另一个名为接受的列,它可以是 0 或 1(0=默认/待定)(1=已接受)。 您必须以某种方式通知被请求者,如果他们接受,您将 accepted 转为 1 并添加好友请求 from 接受 ==1 的被请求者,如果他们拒绝,您可以删除那一排。 我确信有一种更有效的方法来做到这一点,但就简单性而言,我认为这已经很简单了。

获取用户 A 的好友?只需检查所有FROM 朋友的数据库,其中accepted == 1

【讨论】:

  • 你以为会是这样吗?但是你会怎么去寻找朋友列表呢?
  • 获取用户A的好友?实际上,您是否还接受一个朋友发出一个朋友请求(在数据库中),并交换了 from 和 to 用户。它会有重复的数据,但是这样你就可以检查所有FROM朋友的数据库,其中accepted == 1
  • 我可以得到用户名和所有其他人吗?
  • 是的,但是如果我的网站上有多个人,例如,如果我让 bob 向 fred 发送好友请求,然后 Greg 登录并且他不是 bob 和 fred 的朋友,这不会显示所有的人是朋友?
猜你喜欢
  • 1970-01-01
  • 2011-08-16
  • 2013-04-28
  • 1970-01-01
  • 1970-01-01
  • 2011-04-29
  • 2010-10-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多