2014-02-14 3 views
0

Я уже давно искал ответ на этот вопрос, просмотрев несколько видеороликов, но я не могу найти хороший ответ. Я хочу создать систему друзей на моем сайте. Я в настоящее время настроил много-много систем, я думаю, это правильно. Должен ли я иметь одну базу данных для каждого члена, содержащую всех своих друзей?Друзья Managin в базе данных mysql для сайта социальной сети

но моя основная проблема в том, когда я получаю все ID друга. как мне получить их имя? Я могу подключиться к базе данных один раз для каждого участника, используя это.

<?php foreach ($friend as $person) { 
friend_names[] = mysqli_query($con, "SELECT username FROM users WHERE id='$person'"); 
} ?> 

Но нет ли более простого способа сделать все это в одном запросе. Я пробовал использовать разные объединения, но потом записывал все имя в базе данных не только для зарегистрированных пользователей. поэтому мне пришлось бы использовать одну базу данных для каждого члена, содержащего идентификатор друзей. а также когда я использую

SELECT users.username 
FROM relationships 
INNER JOIN users ON relationships.user_1 = users.id 

Он также добавляет мое имя пользователя. может кто-нибудь объяснить, как я должен это делать. поэтому мне не нужно сидеть, слушая людей на youtube, объясняя, как работает функция: S?

DB для отношений

CREATE TABLE IF NOT EXISTS `relationships` (
`id` int(11) NOT NULL AUTO_INCREMENT, 
`user_1` int(11) NOT NULL, 
`user_2` int(11) NOT NULL, 
PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; 
+0

Пожалуйста, разместите свою схему db. И «JOIN» - это, вероятно, путь сюда – kero

+1

_ «Я должен иметь одну базу данных для каждого члена» _ - _what? _ Конечно, нет. // Вы должны больше узнать о _basics_ обработки данных с SQL, потому что это звучит так, как будто вы знаете, где мало сейчас. – CBroe

+0

Я добавил db. CBroe. Я достаточно знаю, что его глупо, но я не могу найти способ сделать это с одной БД. информация о пользователе находится в БД, называемой пользователем, которая содержит больше информации, но важность в ней связана с именем пользователя и идентификатором – Mcclane654

ответ

0
select users.username 
from relationships 
inner join users on relationships.user_2=users.id  
and relationships.user_1=2; 

вам нужно будет использовать это в вашей базе данных. вы просто меняете код в конце (relationships.user_1 = 2) с вашим идентификатором сеанса пользователя :)

Редактировать: , чтобы получить все. В одном запросе. Я также добавил строку для статуса (заблокированный, друг, ожидающий запроса):

SELECT users.username 
FROM relationships 
INNER JOIN users ON ((relationships.user_1 = users.id AND relationships.user_2='$user') 
or (relationships.user_2 = users.id AND relationships.user_1='$user')) 
and relationships.status=1 
Смежные вопросы