PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 6
Renya Отправлено: 18 Августа, 2017 - 21:22:43 • Тема: Страница пользователя и Новостная лента событий • Форум: SQL и Архитектура БД

Ответов: 2
Просмотров: 44
Всем Привет! вообщем ломаю голову как создать новостную ленту событий и страницу пользователя. копирую как в ВК.

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

на сервере стоит MySql. еще как то надо будет с фотками решать вопрос там как то группировать по времени в одно события скажем за последний час.

поделитесь опытом кто чем сможет.
может уже есть кто реализовал такое.

планирую еще memcached поставить. правда пока не научился с ним работать)
Renya Отправлено: 28 Декабря, 2016 - 19:58:05 • Тема: Двойной запрос! нужна помощь • Форум: SQL и Архитектура БД

Ответов: 8
Просмотров: 77
архитектура диалогов у меня получилось так:

юзер щелкает написать сообщение там я ищу в диалогах есть ли открытый диалог между ними (возможно когда то уже переписывались и удалили историю сообщений) и возвращаю ID диалога либо нового только что созданного либо старого. создаю канал прослушки данного диалога по ID между пользователями.

встречал схему диалогов, но только между двумя пользователями. а мне нужно реализовать и групповой чат 3,4 и т.п.
в итоге схема диалогов имеет только два поля ID и users где сохраняю участников данного диалога. кроме как сохранять их через запятую ничего не придумал.

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

вообще это выглядит как в ВК переписка принцип тот же.

Я прекрасно понимаю что все это далеко не идеально, поэтому и обращаюсь на форум.
Renya Отправлено: 28 Декабря, 2016 - 11:07:32 • Тема: Двойной запрос! нужна помощь • Форум: SQL и Архитектура БД

Ответов: 8
Просмотров: 77
Мелкий извиняюсь, я не профи. данный запрос нашел в просторах и добавил свое.

ID диалогов я получаю за ранее вывожу список диалогов юзеру в которых он участвует почему отдельно?!

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

мне нужно просто вывести список диалогов в котором участвует юзер с последним сообщением в этом диалоге
Renya Отправлено: 28 Декабря, 2016 - 08:18:11 • Тема: Двойной запрос! нужна помощь • Форум: SQL и Архитектура БД

Ответов: 8
Просмотров: 77
Мелкий предлагаете после каждого сообщение обновлять запись диалога?
соединений многовато будет записать сообщение и обновить запись диалога. не вариант. проще так оставить как есть. можно еще сократить запрос убрав запрос к диалогам. список все равно получаю намного раньше.
Renya Отправлено: 27 Декабря, 2016 - 23:19:55 • Тема: Двойной запрос! нужна помощь • Форум: SQL и Архитектура БД

Ответов: 8
Просмотров: 77
Спасибо всем за внимания, вопрос решил так:

как я понял WHERE dialog.id IN (1,2,5,8) так не получиться

поэтому через foreach раскидал список нужных диалогов и после уже сделал такой запрос для каждого диалога

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT dialog.id, dialog.users, msg.id, msg.sey_to, msg.dialog_id, msg.msg, msg.STATUS, UNIX_TIMESTAMP(msg.date) FROM (SELECT MAX(id) AS 'maxid', IF (dialog_id = '".$val."', msg, date) AS 'user' FROM msg WHERE dialog_id = '".$val."' GROUP BY user ORDER BY msg.date DESC LIMIT 1) AS a INNER JOIN msg ON a.maxid = id, dialog WHERE dialog.id=msg.dialog_id


вывел последнее сообщение диалога, ID диалога и список юзеров в диалоге

З.ы. и все таки если кому то что придет в голову) отпишитесь
Renya Отправлено: 27 Декабря, 2016 - 07:05:31 • Тема: Двойной запрос! нужна помощь • Форум: SQL и Архитектура БД

Ответов: 8
Просмотров: 77
Приветствую Вас!

Помогите пожалуйста с запросом, голову сломал уже.

имеется таблица с диалогами юзера и таблица сообщений, выполняя запрос по выводу диалогов пользователя через WHERE dialog.id IN (1,2,5,8)

хочу получить как в ВК вывести список диалогов с последним сообщением в диалоге

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

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT dialog.id, dialog.users, msg.id, msg.sey_to, msg.msg, msg.STATUS, msg.date FROM dialog, msg WHERE dialog.id IN (SELECT dialog_id FROM msg) AND dialog.id=msg.dialog_id AND dialog.id IN ($dialogs) ORDER BY msg.date DESC


т.е. сперва выводит последнее сообщение диалога 1 потом 5,8,5,8,1 учитывая последнее сообщение по времени.

Помогите составить запрос чтоб он выводил по одному последнему, а не все сообщения диалогов. пробовал ставить LIMIT 1 тут (SELECT dialog_id FROM msg) вывода нет.

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB