我创建了一个人们可以创建个人资料的网站。但我想弄清楚如何开始制作添加好友按钮,以便用户可以拥有朋友。
在我的用户表中,我有user_id,first_name,last_name,email等。
我应该以某种方式将用户的user_id与朋友表中的朋友联系起来吗?
我是编程新手,所以这些对我来说还是新手。谢谢!
答案 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回答:
答案 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。