Nano Hash - криптовалюты, майнинг, программирование

Не удается отобразить список друзей

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

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

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; ?>

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

31.07.2013

  • какой $ профиль возвращается? 31.07.2013
  • Вы пытались сбросить $ profile ? 31.07.2013
  • profile — это поле, содержащее изображение профиля в таблице пользователей. но он просто возвращает ‹img src=› 31.07.2013
  • что вы пытаетесь сохранить в поле профиля, имя файла или URL 31.07.2013
  • profile — это URL-адрес изображения, он указан в коде как ‹img src‹?php echo $profile; ?›› поля в базе данных выглядят, например, как /images/profiles/4353453.jpg. 31.07.2013
  • попробуйте использовать мой ответ как данный 31.07.2013

Ответы:


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 />";
}
?>
31.07.2013
  • Спасибо, это сработало! он отображал имя пользователя, я сам разберусь с профилем. 31.07.2013

  • 2

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

    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
    

    Приведенный выше запрос вернет идентификатор друзей

    31.07.2013
  • Спасибо, я попробовал это, но в профиле администратора он по-прежнему просто отображает администратора без изображения и друга в дополнительном профиле друга. 31.07.2013

  • 3

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

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

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

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

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

  • 4

    Предполагая, что 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
    
    31.07.2013

    5

    Попробуйте следующий запрос

    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;
    
    31.07.2013

    6

    $result = mysql_query($sql) или die(mysql_error());

    Попробуйте это и дайте нам результат.

    С уважением

    31.07.2013
  • Вывод: администратор без ошибок, без изображения профиля, просто имя пользователя профиля, в котором я тестировался, и если я попытаюсь использовать учетную запись с именем друг, он отобразит друга без изображения. 31.07.2013
  • @user2629980 user2629980 Если вы хотите прокомментировать, посмотрите комментарии, если комментарий уже сделан, проголосуйте за него, а не копируйте и вставляйте. 31.07.2013
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..