Loading...
Обучение/Помощь новичкам | Дублирует сообщение
И еще, если в запросе используете 1 OR 2 & AND 3
Необходимо явно указывать скобки
(1 OR 2) AND 3 или 1 OR (2 AND 3)
Простой пример запроса в DCMS который выводит сообщения.
php
   $q=mysql_query("SELECT * FROM `mail` WHERE `id_user` = '$user[id]' AND `id_kont` = '$ank[id]' OR `id_user` = '$ank[id]' AND `id_kont` = '$user[id]' ORDER BY id DESC LIMIT $start, $set[p_str]");   
И в таблицу пишется только 1 запись. Минут только в том что если собеседник удаляет сообщение у себя то оно пропадает и у получаетля.
DenSBK (19 окт 2022, в 20:46)
Так тебе надо отправить сообщение собеседнику в БД должно писать твое сообщение и собеседника, получается будет 2 записи.
То и надо делать запись таким образом что бы были ID твой и того кому пишут они в любом случае будут разные.
Я всего лишь тебе привел пример. Как у тебя там все реализовано я не знаю.
У меня есть две таблицы post - ето сообщения всех пользователей, таблица followers - ето юзери на которых я подписан и которые подписани на меня. Я 2 табли. соединяю
sql
   $c = $db->query("SELECT * FROM `followers` tb1,`post` tb2  WHERE  tb1.id_user = '". $user['id'] ."' AND tb1.id_follower = tb2.id_author ORDER by tb2.time DESC LIMIT $start, 10");   
и у меня показивают только сообщения пользователей на которых я подписан, еслы я допустим отписался от пользователя я не выжу сообщений етого пользователя. Здесь все работает! Я хочу сделать так чтобы я сдесь еще и свои выдил сообщения кроме подписчиков.
DenSBK (19 окт 2022, в 20:58)
Простой пример запроса в DCMS который выводит сообщения.
php
   $q=mysql_query("SELECT * FROM `mail` WHERE `id_user` = '$user[id]' AND `id_kont` = '$ank[id]' OR `id_user` = '$ank[id]' AND `id_kont` = '$user[id]' ORDER BY id DESC LIMIT $start, $set[p_str]");   
И в таблицу пишется только 1 запись. Минут только в том что если собеседник удаляет сообщение у себя то оно пропадает и у получаетля.
сдесь одна таблица а у меня 2
Расставьте правильно скобки 😡
Temma (19 окт 2022, в 21:08)
Расставьте правильно скобки 😡
спасибо попробую
Temma (19 окт 2022, в 21:08)
Расставьте правильно скобки 😡
Еслы я расставляю скобки так то уже по 10 не дублирует а по 2, уже ближе к кульминации.
sql
   $c = $db->query("SELECT * FROM `followers` tb1,`post` tb2  WHERE (tb2.id_author = '". $user['id'] ."' OR tb1.id_user = '". $user['id'] ."') AND (tb1.id_follower = tb2.id_author) ORDER by tb2.time DESC LIMIT $start, 10");   
Можете ddl таблиц и тестовые данные выложить на sqlize.online, и что должно вывести
попробую помочь
[i] [!] (19 окт 2022, в 20:59)
У меня есть две таблицы post - ето сообщения всех пользователей, таблица followers - ето юзери на которых я подписан и которые подписани на меня. Я 2 табли. соединяю
sql
   $c = $db->query("SELECT * FROM `followers` tb1,`post` tb2  WHERE  tb1.id_user = '". $user['id'] ."' AND tb1.id_follower = tb2.id_author ORDER by tb2.time DESC LIMIT $start, 10");   
и у меня показивают только сообщения пользователей на которых я подписан, еслы я допустим отписался от пользователя я не выжу сообщений етого пользователя. Здесь все работает! Я хочу сделать так чтобы я сдесь еще и свои выдил сообщения кроме подписчиков.
А если этот фрагмент запроса:
php
   tb2.id_author = '". $user['id'] ."' OR tb1.id_user = '". $user['id'] ."'   
Заключить в скобках? Так как OR работает как или 1 или 2. Разумеется его нужно взять в скобки.
sql
   $c = $db->query("SELECT * FROM `followers` tb1,`post` tb2  WHERE (tb2.id_author = '". $user['id'] ."' OR tb1.id_user = '". $user['id'] ."') AND tb1.id_follower = tb2.id_author  ORDER by tb2.time DESC LIMIT $start, 10");   
Как то так попробуй.
Temma (19 окт 2022, в 21:28)
Можете ddl таблиц и тестовые данные выложить на sqlize.online, и что должно вывести
попробую помочь
пишет: Ви маєте помилку в синтаксисі SQL;
Онлайн: 1
Время:
Gen. 0.1202
(c) Bym.Guru 2010-2026