#php #mysql
#php #mysql
Вопрос:
Я создал систему личных сообщений и пытаюсь отобразить аватар человека, который получает сообщение, но вместо получения аватара получателя он пытается получить изображение для вошедшего в систему пользователя.
Что касается источника изображения, аватары хранятся в папке с именем user
. Расположение папки — user / имя пользователя / аватар. Однако при реализации открывается нужная папка пользователя, но выполняется поиск аватара вошедшего в систему пользователя.
Кроме того, следует отметить еще одну вещь. По какой-то причине отображается аватар sender
(родительского сообщения), но не получателя.
Вот мой PHP.
$sql = "
SELECT * FROM users
INNER JOIN pm ON users.username = pm.sender
WHERE (
receiver='$logged_in_user'
AND parent='x' AND rdelete='0'
)
OR (
sender='$logged_in_user'
AND sdelete='0' AND parent='x'
)
ORDER BY senttime DESC";
$query = mysqli_query($db, $sql);
$statusnumrows = mysqli_num_rows($query);
if($statusnumrows > 0){
while ($row = mysqli_fetch_array($query, MYSQLI_ASSOC)) {
//assigning variables
$avatar = $row["avatar"];
$sender = $row["sender"];
$receiver = $row["receiver"];
if($parent == "x" amp;amp; $sender == $logged_in_user){
$profile_pic = '<img src="user/'.$receiver.'/'.$avatar.'" alt="'.$receiver.'">';
}
}
}
echo $profile_pic;
Комментарии:
1. Вы устанавливаете receiver=’$logged_in_user’ в предложении where. Это должен быть идентификатор получателя, который в вашем коде нигде не упоминается. На самом деле этот запрос кажется действительно запутанным.
Ответ №1:
Итак, предполагается, что этот PHP выдает аватар получателя?
Посмотрите на SQL здесь:
INNER JOIN pm ON users.username = pm.sender
Попробуйте вместо:
INNER JOIN pm ON users.username = pm.receiver
(предполагая, конечно, что столбец называется «receiver» в вашей схеме).
Комментарии:
1. Большое спасибо! Это исправлено. Я такой глупый! Очень признателен!!
2. Не так уж и глупо … подобные вещи случаются. Иногда это перехватывается до того, как отправляется в S.O. хотя 🙂 Спасибо за принятый ответ!