SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 02.04.2015 02:01:35

sidor84
Участник
Зарегистрирован: 02.04.2015
Сообщений: 6

Помогите реализовать переписку

Всем привет. Ребят помогите создать переписку с пользователями на сайте.
сайт с объявлениями.

в каждом отдельном объявлении (с индивидуальным id) есть форма отправки сообщения пользователю.

есть таблицы в БД
таблица user, objav, messages

в таблице user - все понятно
юзеры со своим id
в таблице objav: id объявления, id пользователя публиковавшего объяву , ну и еще строки которые в данном случае не необходимы.


в таблице messages:
id - автоинкремент
id_objav - id объявления в тему которого было написано сообщение
poluchatel_id - тот кому сообщение написано(он же хозяин объявления)
otpravitel_id - тот кто написал сообщения (он тоже юзер с индивидуальным id)
message - ну эт понятно. текст сообщения
date - дата
readed - 0/1 - Не прочитано/прочитано

ну в общем, добавление в базу сообщения со всеми данными сделал.
Но голову ломаю, как выводить сообщения пользователям:

Есть две страници:
spisok.php - Тут выводим список исходящих/входящих сообщений.
допустим, я со своим id #1 написал 3 сообщения пользователю с id #5
1сообщение пользователю с id #6
пользователь с с id #15 написал мне(id#1)
и т.д

на этой странице выводим только ссылки на переписки
Диалог3 - входящий id#15 c id #1 (3сообщение) (несмотря на то что в диалоге 3 сообщения, на этой странице выводим ссылку 1 раз. т.е. нужно не к id_objav привязаться, а как то по другому)
диалог2 - исходящий id#1 c id #6 (1сообщение)
диалог1 - исходящий id#1 c id #5 (1сообщение)

При клике на ссыль (допустим диалог3), переходим на страницу
messages.php
Где полностью отражаются сообщения
от пишущего и от принимающего пользователей.

Ну в общем думаю подробно написал, кто разбирается, плз напишите как это реализовать, ну или если на статью ссыль кините, тож благодарен буду.

тут я выложил три картинки, как структурно выглядит то чего хочется http://infor.com.ua/test.php

Неактивен

 

#2 02.04.2015 09:30:08

Александр Трофимов
Завсегдатай
Откуда: Юрмала
Зарегистрирован: 19.09.2011
Сообщений: 95

Re: Помогите реализовать переписку

Два запроса соединенные через UNION. [Поправил, не там постаил MAX(date) as date]

SELECT
    *
FROM
(
    SELECT
        *,
        MAX(date) as date
    FROM
    (
        SELECT poluchatel_id as other, otpravitel_id as me ... FROM messages WHERE otpravitel_id = 1 ...
        UNION
        SELECT otpravitel_id as other, poluchatel_id as me .... FROM messages WHERE poluchatel_id = 1 ...
    ) subgrp
    GROUP BY other
) grp
ORDER BY date DESC



Что-то в этом роде. Потом можно пытаться наращивать запрос, чтобы была сортировка по непрочитанным/прочитанным в первую очередь и по дате во вторую.

Отредактированно Александр Трофимов (02.04.2015 09:32:15)

Неактивен

 

#3 02.04.2015 14:39:52

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Помогите реализовать переписку

Посмотрите ещё эту тему
http://sqlinfo.ru/forum/viewtopic.php?id=7311

Неактивен

 

#4 02.04.2015 17:55:46

sidor84
Участник
Зарегистрирован: 02.04.2015
Сообщений: 6

Re: Помогите реализовать переписку

Спасибо большое... попытаюсь к своему проекту прикрутить... но если что-то не получится... буду дальше задалбывать!)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson