Я пытаюсь создать систему поиска друзей, такую как Facebook, но у меня проблема с результатом.Результаты, не показывающие друзей, покажут все данные два раза.
Я сделал этот запрос:
$uid = '1';
$key = 'john'
$result = mysqli_query($this->db,"
SELECT U.username,U.userid,U.userfullname, F.userone, F.usertwo, F.role
FROM users U, friends F WHERE U.username like '%$key' OR
U.userfullname like '$key%' OR U.username like '$key%' OR
U.userfullname like '%$key' OR U.username like '$key' OR
U.userfullname like '$key' AND F.userone=U.userid AND
F.userone='$uid' AND F.role='fri' AND F.userone = '$uid'
ORDER BY F.userone = '$uid' LIMIT 10") or die(mysqli_error($this->db));
Таблица данных пользователя,
CREATE TABLE `users` (
`userid` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
`userfullname` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
`userstatus` enum('0','1','2') NOT NULL DEFAULT '0',
PRIMARY KEY (`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
INSERT INTO `users` (`userid`, `username`, `userfullname`,`userstatus`) VALUES
(1, 'john', 'John Doe', '0'),
(2, 'aziz', 'aziz', '0'),
(3, 'selma', 'Selma Kose', '0');
Таблица друзей
CREATE TABLE `friends` (
`friendid` int(11) NOT NULL AUTO_INCREMENT,
`userone` int(11) DEFAULT NULL,
`usertwo` int(11) DEFAULT NULL,
`role` enum('flwr','fri') NOT NULL DEFAULT '1',
PRIMARY KEY (`friendid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
INSERT INTO `friends` (`friendid`, `userone`, `usertwo`, `role`) VALUES
(1, 1, 1, 'me'),
(2, 2, 2, 'me'),
(3, 3, 3, 'me'),
(4, 2, 1, 'fri'),
(5, 2, 3, 'flwr'),
(6, 3, 1, 'fri');
Пожалуйста, подумайте, что вы ищете своих друзей, и ваш идентификатор пользователя равен 1, и вы ищете aziz, проверяя запрос aziz - это ваш друг (fri or flwr
) из таблицы друзей, если да, то покажите результат.Но мой запрос показывает всех пользователей, а не только друзей.
Чего мне здесь не хватает, кто-нибудь может мне помочь в этом отношении?
Результат должен быть только для имени пользователя john, но он показывает всем пользователям два раза.
Здесь ДЕМО