🧙Конкурс сказок!
FAQ
(OFF) Dgek_London 15 авг 2017

Как сделать удаление сообщений

У меня база сообщений. Поля: id_от_кого_собщуха , id_кому_собщуха , время, сообщение. Загвоздка в том, что если один удаляет сообщения, то у другого они тоже удаляются, т.к. удаляются с базы. Нужен вариант, когда сообщения будут удаляться по желанию, но сохраняться у аппонента. Чувствую, что туплю, но выхода не вижу.

Комментарии (4)

Пример кода я сейчас вряд ли покажу, а вот в теории - пожалуйста!
Как вариант можно добавить поле с инфой о том, кто был инициатором удаления сообщения и не показывать его именно ему, а собеседнику показывать. И вообще "физически" удалять такие данные не есть хорошо, ибо по-любому между пользователями начнется срач (так сказать "бокс по переписке"), кто-то на кого-то будет жаловаться а у Администрации не будет необходимых материалов для вершения правосудия. Написанные мной скрипты никогда "физически" не удаляли подобных данных (по крайней мере первые несколько месяцев), а просто помечали их как удаленные и отображали их только администрации!..
Вот и я подумал о создании в переписке чего то типа архива или корзины.
Это тоже дело! Однако, по логике реляционных БД придется создавать для них отдельные таблицы для данных, и отдельные для взаимосвязей этих данных и с пользователями, и с диалогами этих пользователей - помимо самих сообщений нужно хранить инфу о том, кто и кому его писал, кто у себя его удалил (кому его не показывать) и кто поместил его в архив (по логике вещей я так понимаю, что одно и то же сообщение может поместить в свой архив любой участник, и даже оба одновременно) и т.д. И тут помимо технических сложностей реализации хотя бы этого списка появляются новые, чисто логические вопросы: сообщение будет перемещаться в архив, или дублироваться? Если дублироваться, то что будет с его копией при удалении одного (при удалении из переписки дубликат останется в архиве?) и т.д. т.п...

Я всегда был большим противником обучения программированию способом разбирания чужих кодов, хотя бы потому, что оттуда не становятся известны детали работы языковых конструкций типа if() и т.д. - видно, что они работают и можно догадаться что делают, но не до конца известно как именно они выполняются и какие имеют варианты (например, не из каждого кода можно узнать о тех же вариантах if() - elseif и else, и тем более узнать тонкости работы не только их, а всего этого в общем) и т.д - для этого нужна исключительно документация по ЯП - только она раскроет Истину :-) Но после, когда на практике ЯП уже освоен (из учебников) настолько, что задуманные алгоритмы записываются и оттачиваются так же свободно, как и обычная речь на своём русском языке - вот тогда уже настало время погружаться в алгоритмы и вот здесь чужие коды будут очень кстати! Наконец-то объяснил суть своего недовольства обучения чужим кодам, о чем меня многие спрашивали и с чем почти никто со мной не соглашался :-)
Однако сам факт наличия решения задачи в чужом коде еще не есть выходом и не нужно тупо копировать его к себе - нужно изучить его логику и переписать по-своему! ;-)
Добавляет два столбца в таблицу, "видит_ли_отправитель" и "видит_ли_получатель".

По умолчанию туда пишешь единицу.
Когда один из собеседников удаляет сообщение, то пишешь в столбец нуль.

Переделываешь выборку сообщений и всё.

Можно проверку сделать, если оба столбца по нулям, то сообщение удаляешься из бд
Показать комментарий
Скрыть комментарий
Для добавления комментариев необходимо авторизоваться
FAQ
Разрушители
Новая эпическая онлайн-игра от Овермобайл. Битвы...
Тема: Светлая | Тёмная
Версия: Mobile | Lite | Touch | Доступно в Google Play