Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.58/19: Рейтинг темы: голосов - 19, средняя оценка - 4.58
_NE_KAKIX_IMEN_
0 / 4 / 1
Регистрация: 20.05.2015
Сообщений: 445
1

Как создать систему личных сообщений или переписку пользователей на сайте php mysql?

25.11.2016, 10:56. Просмотров 3538. Ответов 57
Метки нет (Все метки)

Всем привет, кто мне подскажет как организовать систему личный сообщений, ну или переписку между пользователями сайта?
Если у кого есть уже готовое решение, не ленитесь поделитесь пожалуйста. Не забудьте дамп таблицы показать еще.
Жду ваших комментов. Если они конечно будут.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2016, 10:56
Ответы с готовыми решениями:

Сервис Личных сообщений на сайте
Добрый вечер, есть сайт с регистрацией и авторизацией, есть личная страница юзера. Вот, мне теперь...

Как прочитать видео или картинку из личных сообщений вк?
Я могу читать текстовые личные сообщения из вк. А если в личные сообщения кто то отправил видео...

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

Как создать систему друзей php mysql
Как создать систему друзей, то-есть: Отправляем заявку в друзья пользователю, а он подтверждает...

Как изучать mysql и php? Сначала php, а потом mysql или наоборот, или сразу?
Хочу изучить mysql и php. Как их изучать? Сначала php, а потом mysql или наоборот, или сразу и то и...

57
Jodah
26.11.2016, 22:23     Как создать систему личных сообщений или переписку пользователей на сайте php mysql?
  #41

Не по теме:

Цитата Сообщение от _NE_KAKIX_IMEN_ Посмотреть сообщение
PHP
1
$_SESSION['users_id'] = $rows[0]['id'];
Мда...

0
fanatikus
1253 / 1193 / 563
Регистрация: 17.11.2012
Сообщений: 5,356
26.11.2016, 22:35 42
Цитата Сообщение от _NE_KAKIX_IMEN_ Посмотреть сообщение
И как мне переделать что бы хранил id пользователя а не login.
а это что?
Цитата Сообщение от _NE_KAKIX_IMEN_ Посмотреть сообщение
$_SESSION['users_id'] = $rows[0]['id'];
судя по всему, это и есть id

Добавлено через 8 минут

Не по теме:

Jodah, опять мы синхронно. я не повторяю. честно:D

0
_NE_KAKIX_IMEN_
0 / 4 / 1
Регистрация: 20.05.2015
Сообщений: 445
26.11.2016, 23:16  [ТС] 43
Это перемена для работы уже залогинеными, ну с таблицы profiles.
PHP
1
2
//Переменая для работы с Анкетами пользователей
$_SESSION['users_id']    = $rows[0]['id'];
Вместо логина я подставил вот такую переменую:
PHP
1
2
//ID Пользователя
$_SESSION['id'] =  $rows[0]['id'];
0
Azdeman
Фрилансер
Эксперт HTML/CSSЭксперт PHP
1802 / 1307 / 590
Регистрация: 12.01.2011
Сообщений: 5,225
27.11.2016, 00:52 44
Цитата Сообщение от _NE_KAKIX_IMEN_ Посмотреть сообщение
Подскажите мне пожалуйста это конечно звучит глупо, но я просто не пойму как изменить на id идентификатор.
Может не стоит так горячится и стоит почитать мануал php, книжечку. А потом переходить к "созданию собственной соц.сети", новички же это так любят. Вы потом главным будете? Можно к вам на работу будет устроится ? Офис планировали где уже будет?
0
27.11.2016, 00:52
fanatikus
1253 / 1193 / 563
Регистрация: 17.11.2012
Сообщений: 5,356
27.11.2016, 13:21 45
Цитата Сообщение от Azdeman Посмотреть сообщение
Можно к вам на работу будет устроится

Не по теме:

в очередь, сукины дети(Булгаков. Собачье сердце)

1
_NE_KAKIX_IMEN_
0 / 4 / 1
Регистрация: 20.05.2015
Сообщений: 445
27.11.2016, 22:47  [ТС] 46
Всем спасибо за обсуждения, тему можно закрывать.
0
_NE_KAKIX_IMEN_
0 / 4 / 1
Регистрация: 20.05.2015
Сообщений: 445
14.12.2016, 17:15  [ТС] 47
Извините тема открыта еще.
Вот появился вопрос, я хочу вытащить диалог между пользователями.
Делаю запрос так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$read = !empty($_GET['idRead']) ? (int)$_GET['idRead'] : 0;
//Пробую вытащить весь диалог между пользователями
$sql='SELECT *
FROM `messages` AS `m`
LEFT JOIN `users` AS `u`
ON `m`.`u_from` = `u`.`id`
WHERE (`u_from` and `u_to`) OR (:u_from and :u_to)
ORDER BY data DESC';
$stmt=$pdo->prepare($sql);
$stmt->bindParam(':u_from',$_SESSION['id'],PDO::PARAM_INT);
$stmt->bindParam(':u_to',$read,PDO::PARAM_INT);
$stmt->bindParam(':u_to',$read,PDO::PARAM_INT);
$stmt->bindParam(':u_from',$_SESSION['id'],PDO::PARAM_INT);
$stmt->execute();
$res=$stmt->fetchAll(PDO::FETCH_ASSOC);
Получается в запросе у меня вытягивает все сообщения всех пользователей которые кому либо когда писали. И на каждой странице если заходишь, то пользователь видит что писал, этот пользователь не ему а другому пользователю.
Как исправить запрос помогите пожалуйста.

Еще один вопрос, когда я делаю Ссылку на страницы пользователей.
И захожу к одному пользователю, жму на ссылку написать ему,
я хочу что бы открывался список сообщений именно между этими пользователями.
Как правильно организовать такой запрос?

Третий вопрос хотел просто сделать так:
если ты зашел в сообщения, то тебе видны лишь ссылки последних сообщений кто тебе писал,
Ну например Moder->привет... это получается последнее сообщения которое написал этот пользователь другому.
По клику на него открывается список сообщений между этими пользователями.
А у меня получается что эти сообщения уже открыты и получается так:
Moder->привет...
Moder->Как дела...
user->Привет как у вас там
Ну и так все сообщения, которые пришли данному пользователю.
А хотелось бы по клику на последнее пришедшее сообщение открывать список сообщений между этими пользователями.
0
ProCode
33 / 33 / 6
Регистрация: 11.12.2016
Сообщений: 329
Записей в блоге: 6
14.12.2016, 18:21 48
Цитата Сообщение от fanatikus Посмотреть сообщение
начинать, никогда не поздно


**поржал от души, спасибо!)))
0
_NE_KAKIX_IMEN_
0 / 4 / 1
Регистрация: 20.05.2015
Сообщений: 445
14.12.2016, 18:55  [ТС] 49
ProCode, Да не за что) Думал коммент помощи а тут ржут с меня)
0
ProCode
33 / 33 / 6
Регистрация: 11.12.2016
Сообщений: 329
Записей в блоге: 6
14.12.2016, 19:09 50
Цитата Сообщение от _NE_KAKIX_IMEN_ Посмотреть сообщение
Вот появился вопрос, я хочу вытащить диалог между пользователями.
Между ДВУМЯ пользователями? Ну так и сделай селект, WHERE u_from = :u_from AND u_to = :u_to

Тут общий принцип таков:

- Если не понимаешь почему сложный запрос выдает "не то" - упрощай

Разбей его на несколько односложных запросов, чтобы было очевидно что и как и зачем и откуда берется.

Если не разбивается - значит БД криво спроектирована, переделать структуру таблиц.

Добавлено через 48 секунд
Цитата Сообщение от _NE_KAKIX_IMEN_ Посмотреть сообщение
ProCode, Да не за что) Думал коммент помощи а тут ржут с меня)
насчет помощи см. камент выше.

А так, да, диалоги у вас тут реально ржачные ))
0
_NE_KAKIX_IMEN_
0 / 4 / 1
Регистрация: 20.05.2015
Сообщений: 445
14.12.2016, 19:16  [ТС] 51
ProCode, На счет диалогов, я их рандомно ввел для общего понимания о чем я говорю.
Так на счет диалогов теперь. Когда я зашел на страницу пользователя, и нажал на ссылку НАПИСАТЬ ЕМУ то меня перекидывает на страницу где вся переписка с этим пользователем.
Как это реализуется?
Чуть выше запрос вроде не подходит.

А вот когда захожу в свои сообщения, то у меня получается так, выводит все сообщения которые пришли данному пользователю.
А мне надо что бы выводилось одно сообщения от конкретного пользователя, один раз и то последнее которое пришло.
И так для всех кто писал тебе.
0
Миниатюры
Как создать систему личных сообщений или переписку пользователей на сайте php mysql?  
_NE_KAKIX_IMEN_
0 / 4 / 1
Регистрация: 20.05.2015
Сообщений: 445
14.12.2016, 19:22  [ТС] 52
А вот когда захожу в свои сообщения, то у меня получается так, выводит все сообщения которые пришли данному пользователю.
А мне надо что бы выводилось одно сообщения от конкретного пользователя, один раз и то последнее которое пришло.
И так для всех кто писал тебе. Короче так:
moder(сообщения)
prof(сообщения)
user(сообщения)
Сообщения выводятся не все а только одно которое пришло последним от одного пользователя, при клике на него, открывается диалог между этими пользователями.
Фото пример выше.
Помогите с запросом добрые люди.
0
ProCode
33 / 33 / 6
Регистрация: 11.12.2016
Сообщений: 329
Записей в блоге: 6
14.12.2016, 19:29 53
Цитата Сообщение от _NE_KAKIX_IMEN_ Посмотреть сообщение
Так на счет диалогов теперь. Когда я зашел на страницу пользователя, и нажал на ссылку НАПИСАТЬ ЕМУ то меня перекидывает на страницу где вся переписка с этим пользователем.
Как это реализуется?
типа как ВКонтакте личка?

ну если навскидку и без изысков, то я бы сделал

1. таблицу с мессаджами (поля, соответственно типа: text, from, to, dialog_id, time)

2. таблицу с юзерами (id, nickname, и так далее)

соответственно, любой диалог вытаскивается банальными селектом по dialog_id с сортировкой по time без всяких джоинов и т.п.

дешево и сердито )))

Добавлено через 1 минуту
Цитата Сообщение от _NE_KAKIX_IMEN_ Посмотреть сообщение
Помогите с запросом добрые люди.
Тут не с запросом, тут с проектировкой базы в целом помогать надо, причем в разделе "MySQL"
0
_NE_KAKIX_IMEN_
0 / 4 / 1
Регистрация: 20.05.2015
Сообщений: 445
14.12.2016, 19:33  [ТС] 54
ProCode, Вот вот как ВК.
Так теперь к практике.
У меня уже есть таблица:
user(id, login и так далее)
message(id, data, u_from, u_to, message, flag)
Пробую вытащить диалоги так:
PHP
1
2
3
4
5
6
7
8
9
$sql = 'SELECT *
FROM `messages`
WHERE u_to = :u_to
AND flag = 0
ORDER BY `id` DESC';
$stmt = $pdo -> prepare($sql);
$stmt -> bindParam(':u_to', $_SESSION['id'], PDO::PARAM_INT);
$stmt -> execute();
$res = $stmt -> fetchAll(PDO::FETCH_ASSOC);
Правильно ли?
Таким запросом у меня получается все письма которые пришли данному пользователю сразу открыты все.
А мне надо что бы от одного пользователя одно поле высвечивалось и то последнее сообщения.
А вот после нажатия на письмо открывался список сообщений именно между этими пользователями на которое письмо он нажал)
0
ProCode
33 / 33 / 6
Регистрация: 11.12.2016
Сообщений: 329
Записей в блоге: 6
14.12.2016, 21:43 55
Ну так это будет два разных запроса

Я бы добавил в таблицу message поле time - туда пихать текущее время

Потом используя функцию MAX выбрать последнюю запись от определенного юзера - вот это оно ("А мне надо что бы от одного пользователя одно поле высвечивалось и то последнее сообщения.") и будет
0
_NE_KAKIX_IMEN_
0 / 4 / 1
Регистрация: 20.05.2015
Сообщений: 445
14.12.2016, 22:45  [ТС] 56
ProCode, Конечно круто)
Делаю запрос на чтения сообщения:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
$read = !empty($_GET['idRead']) ? (int)$_GET['idRead'] : 0;
 
$sql='SELECT *
FROM `messages` AS `m`
LEFT JOIN `users` AS `u` ON `m`.`u_from` = `u`.`id`
WHERE `m`.`u_to` = :u_to AND `m`.`id` = :id_mess
ORDER BY data DESC';
$stmt=$pdo->prepare($sql);
$stmt->bindParam(':u_to',$_SESSION['id'],PDO::PARAM_INT);
$stmt->bindParam(':id_mess',$read,PDO::PARAM_INT);
$stmt->execute();
$res=$stmt->fetch(PDO::FETCH_ASSOC);
Получается так смотрим картинку.
Эти сообщения один пользователь отправил.
А как сделать чтобы все эти сообщения хранились в одной ссылке для каждого пользователя кто тебе писал, когда открываю эту ссылку то открывается письмо которое пришло от пользователя.
Смотрим в рисунке.
0
Миниатюры
Как создать систему личных сообщений или переписку пользователей на сайте php mysql?  
_NE_KAKIX_IMEN_
0 / 4 / 1
Регистрация: 20.05.2015
Сообщений: 445
17.12.2016, 22:39  [ТС] 57
Почему не кто не знает? Или в падло помочь?
А как сделать такое хочу выводить в сообщении от кого и кому:
От: Руслан
Кому: Виталию
И тут пишем сообщение?
Как вывести ники пользователей от кого и кому? Я вывел только ник типа от кого, а вот как вывести кому?
0
_NE_KAKIX_IMEN_
0 / 4 / 1
Регистрация: 20.05.2015
Сообщений: 445
11.05.2017, 15:59  [ТС] 58
Вопрос, буду сам решать.
Тему можно, закрывать
0
11.05.2017, 15:59
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.05.2017, 15:59

Требуется создать систему, отвечающую за опрос пользователей, которые являются студентами или школьниками
Привет! Мне нужно написать задачу следующего назначения -:) Требуется создать систему, отвечающую...

Как увеличить кол-во личных сообщений
Как увеличить кол-во лс с 200 до 1000 или более? Powered by vBulletin® Version 3.8.7 Добавлено...

Система личных сообщений. Вывод списка сообщений.
Доброе время суток! Возникла проблема с почтой, а конкретно не могу вывести всю переписку...


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

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

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