Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как организовать базу для персонального чата между пользователями [2]

 PHP.SU

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


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

> Без описания
zzzzzz
Отправлено: 26 Августа, 2013 - 21:40:23
Post Id


Гость


Покинул форум
Сообщений всего: 117
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




from_id кто написал
to_id кому написали

(Отредактировано автором: 26 Августа, 2013 - 21:41:34)

 
 Top
armancho7777777 Супермодератор
Отправлено: 26 Августа, 2013 - 21:45:02
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




zzzzzz пишет:
но не свои тоже

Не может быть.
Выборка происходит по ID пользователя.
 
 Top
zzzzzz
Отправлено: 26 Августа, 2013 - 21:51:20
Post Id


Гость


Покинул форум
Сообщений всего: 117
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




я про этот sq
CODE (SQL):
скопировать код в буфер обмена
  1.  SELECT `messages`, `time`
  2.     FROM `mess_table`
  3.    WHERE `to_id` = '{$userId}'
  4.      AND `read` = 0  -- Непрочитанные
  5. ORDER BY `time`
  6.  


имея такую таблицу
-- |привет | 1 | 2 | -- | --
-- | привет | 2 | 1 | -- | --
-- |как дела| 1 | 2 | -- | --
-- | нормально| 2 | 1 | -- | --
-- | как у тебя| 2 | 1 | -- | --

Получается ваш sql вернет такую же структуру вне зависимости кто ее запрпосил первый собеседник или второй
 
 Top
caballero
Отправлено: 26 Августа, 2013 - 21:53:27
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
Получается ваш sql вернет такую же структуру вне зависимости кто ее запрпосил первый собеседник или второй

а у них разве не тот же самый разговор?
(Добавление)
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT `messages`, `time`
  2.     FROM `mess_table`
  3.    WHERE `to_id` = '{$userId}'  OR   `from_id` = '{$userId}'
  4. ORDER BY `time`  DESC

(Добавление)
а вообще если это чат то нужен какой то номер чата
иначе как связать двоих

все таки определитесь это чат или обмен личными сообщениями


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
zzzzzz
Отправлено: 26 Августа, 2013 - 21:59:14
Post Id


Гость


Покинул форум
Сообщений всего: 117
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




обмен личными сообщениями в реальном времени

(Отредактировано автором: 26 Августа, 2013 - 21:59:29)

 
 Top
Medallion
Отправлено: 26 Августа, 2013 - 22:09:33
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Май 2012  
Откуда: Херсон, Украина


Помог: 7 раз(а)




Я считаю организовать, что-то наподобие этого, такая вот структура:

id | user | room | message | time |

id - соответственно идентификатор
user - пользователь
room - комната
message - сообщение
time - время

Пользователь начинает чат, создается комната (окружение),
пишет сообщение.
другой пользователь заходит в чат, при этом идет выборка номера комнаты,
оставляет сообщение, и вместе с сообщением в базу уходит номер комнаты, как идентификатор последующей выборки сообщений между двумя или несколькими собеседниками.
 
 Top
zzzzzz
Отправлено: 26 Августа, 2013 - 22:22:28
Post Id


Гость


Покинул форум
Сообщений всего: 117
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




это уже логичней
(Добавление)
была у меня такая идея но она с треском провалилась, объясню может вы поможете.

У меня тоже был свой идентификатор чата(комната или окружение как вы уже сказали) и этот chat_id состоял из айдишников двух собеседников, допустим между 1 и вторым узером, chat_id это 1-2 Если между 487 юзером и 4487 тогда chat_id == 487-4487. И это лучший идентификатор на мой взгляд.

Но вот в чем загвоздка, выборка одного юзера будет отличаться от выборки другого. Поясню. Допустим я в базе под id - 447 а мой собеседник под id - 321, тогда мой запрос такой
select ... WHERE chat_id='$moyID-$egoID' - что дает на WHERE chat_id='447-321'
запрос моего собеседника же будет таким
select ... WHERE chat_id='$moyID-$egoID' - что дает на WHERE chat_id='321-447'
ведь мойID и егоID у каждого свой т.е противоположен, а chat_id только один.

ИТОГО КОНФУЗ.

(Отредактировано автором: 26 Августа, 2013 - 22:42:17)

 
 Top
caballero
Отправлено: 26 Августа, 2013 - 23:08:15
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
обмен личными сообщениями в реальном времени

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

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT `messages`, `time`
  2.     FROM `mess_table`
  3.    WHERE  (`to_id` = '{$userId1}'  AND  `from_id` = '{$userId2}' ) OR  (`to_id` = '{$userId2}'  AND  `from_id` = '{$userId1}' )
  4. ORDER BY `time`  DESC


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
zzzzzz
Отправлено: 27 Августа, 2013 - 10:37:05
Post Id


Гость


Покинул форум
Сообщений всего: 117
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




"Тяжелый" запрос получился
 
 Top
Zuldek
Отправлено: 27 Августа, 2013 - 10:39:43
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Что здесь тяжелого? Один составной индекс будет у вас.
EXPLAIN

(Отредактировано автором: 27 Августа, 2013 - 11:39:07)

 
 Top
zzzzzz
Отправлено: 27 Августа, 2013 - 10:56:37
Post Id


Гость


Покинул форум
Сообщений всего: 117
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




What is the EXPLANE?
 
 Top
Zuldek
Отправлено: 27 Августа, 2013 - 11:38:45
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB