Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
3 / 3 / 1
Регистрация: 24.01.2017
Сообщений: 17
1
MySQL

Система личных сообщений. Вывод списка сообщений.

07.02.2017, 04:06. Показов 2599. Ответов 4
Метки нет (Все метки)

Доброе время суток!
Возникла проблема с почтой, а конкретно не могу вывести всю переписку сообщений и входящих и исходящих с пользователем на одной странице.
имеется таблица `pochta` в которой следующие поля:
---------------
kto_id - id пользователя, кто отправил сообщение
---------------
komu_id - id пользователя, кому отправили сообщение
---------------
msg - текст сообщения
---------------
time - время отправления
---------------
значит в итоге чтобы вывести входящие сообщения которые пришли мне, то получается так
PHP
1
2
3
4
5
6
7
8
9
10
11
$query = mysql_query ( "SELECT * FROM `pochta` WHERE `komu_id` = '{$user['id']}'" );
while ( $q = mysql_fetch_array ( $query ) )
{
    // массив пользователей
    $usr = mysql_fetch_array ( mysql_query ( "SELECT * FROM `users` WHERE `id` = '{$q['kto_id']}' LIMIT 1" ) );
    // выводим сообщение
    echo '<div class="text">';
    echo $usr['login'] . '<br />'; // ник отправителя
    echo $q['msg']; // текст сообщения
    echo '</div>';
}
ну и собственно чтобы вывести исходящие сообщения, которые я отправил, нужно всего лишь поменять местами `komu_id` на `id_komu`

PHP
1
2
3
4
5
6
7
8
9
10
11
$query = mysql_query ( "SELECT * FROM `pochta` WHERE `kto_id` = '{$user['id']}'" );
while ( $q = mysql_fetch_array ( $query ) )
{
    // массив пользователей
    $usr = mysql_fetch_array ( mysql_query ( "SELECT * FROM `users` WHERE `id` = '{$q['komu_id']}' LIMIT 1" ) );
    // выводим сообщение
    echo '<div class="text">';
    echo $usr['login'] . '<br />'; // ник отправителя
    echo $q['msg']; // текст сообщения
    echo '</div>';
}
это всё понятно и просто, но как мне вывести все сообщения связанные со мной т.е. и входящие и исходящие на одной странице? может кто подскажет? хороший тому пример диалоги ВК

Добавлено через 29 минут
уже горячо осталось только ник правильно вывести.
PHP
1
2
3
4
5
6
7
8
$query = mysql_query ( "SELECT * FROM `pochta` WHERE `komu_id` = '{$user['id']}' OR `kto_id` = '{$user['id']}' ORDER BY `time` DESC" );
while ( $q = mysql_fetch_array ( $query ) )
{
    // выводим сообщение
    echo '<div class="text">';
    echo $q['msg']; // текст сообщения
    echo '</div>';
}
Добавлено через 11 минут
а вот с ником проблема
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.02.2017, 04:06
Ответы с готовыми решениями:

Вывод личных сообщений
Привет всем :) Если помните то я как то раз попросил помощь по личной переписке юзеров!А если нет...

Отображение новых личных сообщений на сайте
Уважаемые форумчане. Подскажите плиз. Как вывести кол-во новых личных сообщений на главную. Как на...

Вывод сообщений
Здравствуйте есть запрос SELECT crm_chat.id, crm_chat.sel, crm_chat.peers, crm_chat.messege,...

Вывод последних сообщений
Помогите дорабоатать mysql_query(&quot;SELECT u.id, mes.text FROM users AS u, messages AS mes WHERE...

__________________

Записывайтесь на профессиональные курсы Fullstack-разработчиков на PHP‌
4
Эксперт PHP
4470 / 3330 / 1085
Регистрация: 06.01.2011
Сообщений: 9,555
07.02.2017, 08:04 2
Цитата Сообщение от nerimbaud Посмотреть сообщение
а вот с ником проблема
Чей nick нужно получить -- отправителя или получателя?

Добавлено через 1 минуту
Или если в поле "от" ID текущего пользователя -- вытаскиваем nick того, чей ID в поле "кому"? А если ID текущего пользователя в поле "кому" -- то наоборот?
0
3 / 3 / 1
Регистрация: 24.01.2017
Сообщений: 17
07.02.2017, 08:59  [ТС] 3
благодаря коду указанному в первом посте и посмотрев на мой скрин, можно заметить, что выводятся мои сообщения с конкретным пользователем. хотелось бы рядом с сообщением ник того, кому принадлежит это сообщение. вот в чём беда не знаю как вывести.
0
Миниатюры
Система личных сообщений. Вывод списка сообщений.  
Эксперт PHP
4470 / 3330 / 1085
Регистрация: 06.01.2011
Сообщений: 9,555
07.02.2017, 09:57 4
Лучший ответ Сообщение было отмечено nerimbaud как решение

Решение

Цитата Сообщение от nerimbaud Посмотреть сообщение
хотелось бы рядом с сообщением ник того, кому принадлежит это сообщение
Что значит принадлежит? Так понимаю, принадлежит оно тому, кто отправил?
Тогда вот:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$query = mysql_query("
    SELECT p.*, u.login FROM `pochta` p
    JOIN
      `users` u ON (u.id = p.kto_id)
    WHERE
      `komu_id` = {$user['id']} OR `kto_id` = {$user['id']}
    ORDER BY
      `time`
    DESC
");
 
while ($row = mysql_fetch_array($query)) {
    // выводим сообщение
    echo '<div class="text">';
    echo '<p>Написал(а): ', $row['login'], '</p>';
    echo $row['msg']; // текст сообщения
    echo '</div>';
}
1
3 / 3 / 1
Регистрация: 24.01.2017
Сообщений: 17
07.02.2017, 10:19  [ТС] 5
Большое спасибо! Вы мне очень помогли.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.02.2017, 10:19

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Вывод сообщений от определенного пользователя
Здравствуйте, собираюсь на сайте сделать систему сообщений. Структура mySQL: id | to | from |...

Корпоративный чат, вывод последних сообщений
Здравствуйте пишу чат и возникла проблема, написал запрос сообщения выводятся и группируются но к...

Вывод пользователя с наибольшим количеством сообщений
Добрый день вопрос такой. mysql&gt; select * from users group by name;...

Реализовать вывод сообщений из БД по принципу диалога
Доброго вам, друзья! спешу сообщить, у меня проблемка, которая уже несколько часов выносит мне...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.