我一直在尝试为会话用户获取朋友提要。但我最终要么一无所有,要么每个人都可以看到它。
表格格式 http://pastebin.com/XGYmpi5u
CREATE TABLE IF NOT EXISTS `users` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(32) NOT NULL,
`password` varchar(32) NOT NULL,
`first_name` varchar(32) NOT NULL,
`last_name` varchar(32) NOT NULL,
`email` varchar(1024) NOT NULL,
`active` int(11) NOT NULL DEFAULT '0',
`email_code` varchar(32) NOT NULL,
`avatar` varchar(55) NOT NULL,
`type` int(1) NOT NULL DEFAULT '0',
`protected` int(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
CREATE TABLE IF NOT EXISTS `feeds` (
`id` int(6) NOT NULL AUTO_INCREMENT,
`user_id` int(6) NOT NULL,
`username` varchar(32) NOT NULL,
`body` text NOT NULL,
`date` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=14 ;
CREATE TABLE IF NOT EXISTS `buddys` (
`id` int(6) NOT NULL AUTO_INCREMENT,
`user_one` int(6) NOT NULL,
`user_two` int(6) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
所以我的问题是,如何获取用户数据、他们发布的提要和好友提要。只有与好友成为朋友的用户才能看到他们发布的帖子,而其他人则看不到。
我试过代码:
$user_id = $_SESSION['user_id'];
if ($getquery = mysql_query("SELECT * FROM feeds f
INNER JOIN users u ON u.user_id = f.user_id
WHERE u.user_id = '$user_id' OR u.user_id IN
(SELECT b.user_one OR b.user_two FROM buddys b
WHERE b.user_one OR b.user_two = '$user_id')")){
但这显示了正确的用户提要,但与其中任何一个朋友成为朋友的用户仍然可以看到帖子。
users 和 feeds 表有类似的列。
+---+----------+
| ID | user_id |
+---+----------+
虽然哥们有
+----+----------+----------+
| ID | user_one | user_two |
+----+----------+----------+
如果表的字段设置为
+----+----------+---------+
| ID | user_one | user_two|
+----+----------+---------+
| 1 | 3 | 5 |
+----+----------+---------+
如果它是 3,我想通过我的 ID 获取它并从用户 ID 5 获取提要。
顺便说一句,我希望它像 Facebook/Twitter 那样。