2013-07-31 1 views
0

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

Мои столы, как так

USERS 
user_id 
username 
profile 

FRIENDS 
user_id 
friend_id 
accepted (ENUM 0 for no, 1 for accepted). 

Вот код, я использую, я не начал преобразование мой сайт Mysqli еще, так что да, я знаю, что код является уязвимым.

<?php 
$user_id = $_SESSION['user_id']; 

$sql = "SELECT friends.id, friends.user_id, friends.friend_id, friends.accepted, users.user_id, users.username, users.profile 
       FROM `friends` 
       LEFT JOIN `users` on users.user_id = friends.user_id OR users.user_id = friends.friend_id 
       WHERE friends.friend_id = $user_id OR friends.user_id = $user_id 
       AND users.user_id != $user_id AND friends.accepted = '1' OR friends.friend_id = $user_id AND friends.accepted = '1'"; 

$result = mysql_query($sql); 
?> 
<img src="<? echo $profile; ?>"><? echo $username; ?> 

Спасибо за любые советы.

+0

, что $ профиль возвращается? –

+0

Вы пытались сбросить $ profile? Профиль –

+0

- это поле, содержащее изображение профиля в таблице пользователей. но он просто возвращает «» – user2571547

ответ

1

Попробуйте это.

<?php 
$friends_result = mysql_query(" 
    SELECT 
     users.`username` AS username 
    FROM 
     friends 
    LEFT JOIN 
     users 
    ON 
     users.`user_id` = friends.`user_id` 
    OR 
     users.`user_id` = friends.`friend_id` 
    AND 
     users.`user_id` != '" . $user_id . "' 
    WHERE 
     friends.`user_id` = '" . $user_id . "' 
    OR 
     friends.`friend_id` = '" . $user_id . "'"); 


while($friends_array = mysql_fetch_array($friends_result)) 
{ 
    echo $friends_array['username'] . "<br />"; 
} 
?> 
+0

Спасибо, это сработало! он отобразил имя пользователя, я сам выясню материал профиля. – user2571547

0

Попробуйте использовать этот запрос,

SELECT friend_id as id FROM `friends` where user_id=$user_id and accepted=1 union select user_id as id from friends where friend_id=$user_id and accepted=1 

выше запрос вернет друзей ID

+0

Спасибо Я пробовал это, но в профиле Admin, он по-прежнему просто отображает« Admin »без картинки, а« Friend »- на друга дополнительного профиля – user2571547

0

попробовать отредактировать команду с

$result = mysql_query($sql) or die(mysql_error()); 

и видеть, что если вы получаете какие-либо ошибки?

Если вы получаете какую-либо ошибку в синтаксисе, тогда исправьте его.

+0

Я получил «статус столбца», понял, что нужно «принять», теперь нет сообщений об ошибке. – user2571547

+0

и вы получаете значение $ профиля? –

+0

Правильно, просто получив название, что странно, потому что имя пользователя и профиль хранятся у пользователей, но отображается только одно из полей из таблицы пользователей. – user2571547

0

Предполагая, что user_id и friend_id в таблице fiends являются внешними ключами user_id в таблице пользователей, поэтому отношения будут «у пользователя может быть один или несколько друзей». следующий запрос даст вам друг идентификатор конкретного пользователя,

SELECT friend_id from friends f 
JOIN users u ON f.user_id = u.user_id 
WHERE u.user_id = $user_id AND f.accepted = 1 
-1

$ Result = mysql_query ($ SQL) или умереть (mysql_error());

Попробуйте это, и дайте нам выход.

С уважением

+0

На выходе «admin» нет ошибок, нет изображения профиля, только имя пользователя профиля, на котором я тестировался, и если я попробую в учетной записи «friend», он отобразит «друга» без изображения. – user2571547

+0

@ user2629980 Если вы хотите комментировать, посмотрите комментарии, если комментарий уже сделан, а затем сохраните его вместо Скопировать и вставить –

0

Попробуйте ниже запрос

SELECT users.id as userid, firstname, lastname, username,profile_id,friends.accepted FROM users RIGHT JOIN (SELECT friend_id as id,accepted FROM `friends` where user_id=$user_id and accepted=1 union select user_id as id,status from friends where friend_id=$user_id and accepted=1) friends ON users.id = friends.id; 

 Смежные вопросы

  • Нет связанных вопросов^_^