spesher
@spesher
Objective-C, iOS app Developer

Нужно правильно сформулировать запросы к базе данных mysql (это связано с диалогами). Кто может помочь?

Доброго времени суток.
Пишу диалоги на сайте, и столкнулся с проблемой, точней с sql запросами.
Например:
Я - пользователь который залогинился, захожу на страницу к другому юзеру, нажимаю на кнопку "Начать диалог", диалог создался (если не был создан) и записался в базу данных, вроде всё нормально, но нет... если я (залогиненный юзер) открою мой список диалогов, то я там вроде-бы всё хорошо.. а когда в другом браузере перехожу на другого пользователя с кем был создан диалог, то я там увижу как-бы диалог с самим с собой. В чем проблема?
Ниже я предоставлю вам скрины и опишу что и как..

user_id - кто создал диалог
with_user_id - с кем.
data_last_message - на это не обращайте внимание, это я сортирую диалоги по последнему сообщению.
3d0b0aeab2194b0ba8f54cc3341290e5.png

ну здесь понятно, думаю описывать не нужно...
dialog_id - айди диалога =) кэп.
50c3371edb9e467f8f69221d22921523.png

Вот например это я залогиненный юзер создал диалог с Ferruccio Lamborghini, всё хорошо тут..
4065dfcad1f94b6fb91e2a0e099db488.png

А вот тут.. всё очень плохо..
Как я описал выше что я увижу диалог с самим собой.
68ec6c116f01493b867e1d1db355f8a3.png

Как исправить это?
Предоставляю скрин (код) запроса..
67712fea8ae04d6d930b40b9365a387e.png

Вот.. надеюсь вы поможете решить эту проблему, а то я уже 3 месяца намучался, но решил не заморачиваться, и доделал другие фичи на сайте, вот это (диалоги) уже последнее что осталось...
Заранее вам благодарен. Надеюсь я подробно описал проблему.

P.S. Если нужно, то я оставил код в виде текста.
// проблема где-то здесь					
	$dialog   = $database->query("SELECT id,user_id,with_user_id FROM dialog_id WHERE with_user_id='$loggedUser->id' OR user_id='$loggedUser->id' ORDER BY last_message_date DESC");
	 	 		 	
	while($dialog_id = $database->fetch_array($dialog))
	 {	
	 	// выбор текста и всего остального с определенного dialog_id	 	 			 		
	 	$text = $database->fetch_array($database->query("SELECT dialog_id,user_id,to_user_id, text, last_message,minutes,hours,day,month,year,status FROM dialogs_message WHERE dialog_id='$dialog_id[id]' AND to_user_id='$dialog_id[with_user_id]' ORDER BY id DESC"));
	 		
	 // выбор имени юзера и т.д... в зависимости от with_user_id, то есть с кем создан диалог.
	$avatar = $database->fetch_array($database->query("SELECT user_id,avatar,firstname,lastname,username FROM users WHERE user_id='$dialog_id[with_user_id]'"));
  • Вопрос задан
  • 272 просмотра
Решения вопроса 1
spesher
@spesher Автор вопроса
Objective-C, iOS app Developer
Хмм... поколдовав, я внес некие изменения, и вроде работает хорошо...

if($dialog_id['with_user_id'] == $loggedUser->id)
{
	$dialog_id['with_user_id'] = $dialog_id['user_id'];
}


3dfff4bd7a04405587b944ab3ae755a9.png

и в результате показывает диалог с тем кто его создал...
7d6fca2eb97440d9b4716df10439420f.png
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы