如何在PHP中添加好友/ defriend函数?

时间:2010-03-30 03:59:53

标签: php mysql

我创建了一个人们可以创建个人资料的网站。但我想弄清楚如何开始制作添加好友按钮,以便用户可以拥有朋友。

在我的用户表中,我有user_id,first_name,last_name,email等。

我应该以某种方式将用户的user_id与朋友表中的朋友联系起来吗?

我是编程新手,所以这些对我来说还是新手。谢谢!

4 个答案:

答案 0 :(得分:4)

好吧,让我们试着保持这个简单。 实际上,您正在尝试找到一种方法将两个用户连接在一起。

由于我试图保持简单,并且绝对不暗示这是最好的方法,我认为最简单方法是这样做是为了创建一个新表(users_friends)包含以下字段:(user_id)和(friend_id)。

好吧,让我们说我的user_id是5。 您的user_id是10。

我想将您添加为我的朋友,因此我将使用以下值为新创建的表添加一个条目: user_id = 5,friend_id = 10.

所以,假设您要显示我的所有朋友,您可以运行查询,例如:

SELECT * FROM `users` WHERE `user_id` IN ( SELECT `friend_id` FROM `users_friends` WHERE `user_id` = '5' );

果然,删除朋友很容易,你要做的就是从新创建的表中删除条目......

DELETE FROM `users_friends` WHERE `user_id` = '5' AND `friend_id` = '10';

噗,你突然不再是我的朋友了;)

所以是的,这些是基础知识。 我会尝试这个解决方案,然后再找到一个可以让你更灵活的解决方案。

答案 1 :(得分:2)

类似的东西:

create table users(
 user_id int unsigned not null auto_increment primary key,
 username varbinary(32) not null
)engine=innodb;


create table user_friends(
 user_id int unsigned not null,
 friend_user_id int unsigned not null,
 primary key (user_id, friend_user_id)
)engine=innodb;

显示用户的一组朋友:

select
 u.*
from
 user_friends uf
inner join users u on uf.friend_user_id = u.user_id
where
 uf.user_id = 1;

答案 2 :(得分:0)

补充f00和Isaac回答:

  1. 基本的伪代码就像这样:
  2. 在您的个人资料页面中有按钮/网址(可能是http://example.com/makefriend.php?memberid= $ memberid)。我们称之为“交朋友”
  3. makefriend.php将检查该特定个人资料页面中的memberid。
  4. makefriend.php也会从请求者处获取requestterid(通常会保存在会话中)。
    • 如果为空,可能未登录。
  5. 接下来,makefriend.php会将memberid和requesterid插入到,例如,friendlist。

答案 3 :(得分:0)

我实际创建了一个包含user1和user2值的朋友表。每当发送好友请求时,user2是请求者,而user1是请求者。这使得了解关注者和实际关注者更加容易..... user2是关注者,而user1是跟随者。因此,如果您的用户名属于user1,这意味着您被user2跟踪,并且您的用户名属于user2,这意味着您正在关注user1 .....这使您更容易。您可以通过从朋友表中选择user1 =您的用户ID或user2 =您的用户ID来获取您的朋友。如果user1 =您的用户ID,那么user2是您的朋友,如果user2 =您的用户ID,那么user1就是您的朋友。您可以将其存储在数组中。然后,对于每个阵列,您都可以找到其用户详细信息。希望你能理解? 您可以通过简单地删除user1 =您的userid和user2 =您的friendid或user1 =您的friendid和user2 =您的用户ID的列来添加删除朋友.....非常简单。

如果您要求 请求朋友: 插入朋友(id,user1,user2,已接受)值('',$ yourfriendid,$ youruserid,' 0');

如果有人要求你, 请求将通过: 插入朋友(id,user1,user2,已接受)值('',$ youruserid,$ yourfriendid,' 0');

接受请求后,接受的列变为ONE(1)而不是零(0)。您需要做的就是在user1接受朋友后,通过设置accepted = 1来更新列。

取消联系: 只需将包含userid和yourfriendid的行删除为user1或user2。

阻止朋友: 您可能需要另一个表,您可以在其中添加被阻止的用户列表....但是如果您熟悉json_encode和json_decode函数,则将被阻止的用户存储到一个数组中会更容易,只需使用保存该数组即可json_encode到你的数据库。您可以从数据库中获取数组,使用json_decode将其转换为实际数组,然后您可以删除任何阻止的用户或将新阻止的用户添加到该数组中,然后再保存到数据库中....这可能会节省空间。因此,所有被阻止的用户都只会包含您的用户ID。