Последние
(OFF) Dgek_London 15 авг 2017

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

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

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

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

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

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

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

Можно проверку сделать, если оба столбца по нулям, то сообщение удаляешься из бд
Показать комментарий
Скрыть комментарий
Для добавления комментариев необходимо авторизоваться
Последние
Странники
Чтобы защитить свою родную деревню Вам придётся...
Тема: Светлая | Тёмная
Версия: Mobile | Lite | Touch | Доступно в Google Play