Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.05.2010, 07:43
Аватар для Darooma2
Интересующийся
Отправить личное сообщение для Darooma2 Посмотреть профиль Найти все сообщения от Darooma2
 
Регистрация: 08.05.2010
Сообщений: 14

Реализация "Удалить"..."Восстановить" как вконтакте.ру
Я не пойму логику работы с удалением, ну например, комментариев вконтакте.ру, когда комментарий вместо немедленного удаления помечается как удаленный и его можно восстановить. Удаляется же он только после перезагрузки страницы.

Как такое реализовать? Меня интересует именно логика, не реализация.
Ответить с цитированием
  #2 (permalink)  
Старый 26.05.2010, 08:31
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Сообщение от Darooma2
Удаляется же он только после перезагрузки страницы.
Уверены? Не факт, что он удаляется из базы.

Можно записывать 2 значения: метку о том, что коммент подлежит удалению и timestamp времени отправления на удаление. А там по крону каждые n минут / часов / дней удалять такие комменты, которые были отправлены на удаление более пяти минут назад.

Либо на beforeunload вешать обработчик ухода со страницы и отправлять запрос на удаление комментов, но тут, емнип, не все гладко с кроссбраузерностью.

Либо, сразу удалять комменты, а по нажатию кнопки "Восстановить" вставлять новый ряд в БД, идентичный старому. Вопрос только в том, где взять данные. Их можно либо хранить в БД, либо (что сомнительно) отдавать клиенту.

Последний раз редактировалось B@rmaley.e><e, 26.05.2010 в 08:35.
Ответить с цитированием
  #3 (permalink)  
Старый 26.05.2010, 08:45
Аватар для Darooma2
Интересующийся
Отправить личное сообщение для Darooma2 Посмотреть профиль Найти все сообщения от Darooma2
 
Регистрация: 08.05.2010
Сообщений: 14

Сообщение от B@rmaley.e><e Посмотреть сообщение
Уверены? Не факт, что он удаляется из базы.
Его ведь нельзя восстановить после перезагрузки страницы, значит он удаляется.

Скорее всего нужно ввести дополнительное логическое поле "Помеченный к удалению" и удалять ... когда? Не по таймеру точно.
Ответить с цитированием
  #4 (permalink)  
Старый 26.05.2010, 08:55
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от Darooma2
Его ведь нельзя восстановить после перезагрузки страницы, значит он удаляется.
Не придумывайте лишнего.
если вам не показывается после перезагрузки страницы такого инструмента, это еще не означает, что в базе уже ничего нет.
скорее всего запись помечается как "требующая удаления", и "неотображаемая".
когда она точно удаляется, я не знаю.
ИМХО, я бы сделал так:
после нажатия кнопка "удаление", отмечал бы как "к удалению", и время события, в базе.
при этом раз в секунду из клиента бы посылал ajax-запрос.
как только перестали приходить запросы, значит можно удалять.
или вообще бы куки обновлял специальные, раз в секунду
Ответить с цитированием
  #5 (permalink)  
Старый 26.05.2010, 09:16
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от B@rmaley.e><e
А там по крону каждые n минут / часов / дней удалять такие комменты, которые были отправлены на удаление более пяти минут назад.
Сомневаюсь, что они там вообще удаляются. Слишком накладно при таких объёмах, проще пометить, как удалённый.
Ответить с цитированием
  #6 (permalink)  
Старый 26.05.2010, 09:37
Аватар для Darooma2
Интересующийся
Отправить личное сообщение для Darooma2 Посмотреть профиль Найти все сообщения от Darooma2
 
Регистрация: 08.05.2010
Сообщений: 14

Ну если не удаляются, а только помечаются как удаленные, то тогда проще. Пометил как удаленный и все, не отображаем при следующей загрузке страницы.
Ответить с цитированием
  #7 (permalink)  
Старый 26.05.2010, 10:56
Аватар для Darooma2
Интересующийся
Отправить личное сообщение для Darooma2 Посмотреть профиль Найти все сообщения от Darooma2
 
Регистрация: 08.05.2010
Сообщений: 14

Или даже лучше: при запросе комментариев, а запрашиваться они могут только для отображения на странице, если он помечен как удаленный, то сразу удаляем его. Без аякса и таймера.
Ответить с цитированием
  #8 (permalink)  
Старый 26.05.2010, 11:10
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от Darooma2
если он помечен как удаленный, то сразу удаляем его
глупость.
если кто-то решит взглянуть на страницу, пока у пользователя еще предложена кнопка "востановить", то пост окончательно удалится, и не будет подлежать востановлению, хотя такую кнопку вроде бы еще пользователь видит
Ответить с цитированием
  #9 (permalink)  
Старый 26.05.2010, 13:06
Аватар для Darooma2
Интересующийся
Отправить личное сообщение для Darooma2 Посмотреть профиль Найти все сообщения от Darooma2
 
Регистрация: 08.05.2010
Сообщений: 14

точно. Тогда получается надо через аякс как ты предложил. Может есть способ рациональнее?
Ответить с цитированием
  #10 (permalink)  
Старый 26.05.2010, 13:38
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Darooma2
Может есть способ рациональнее?
Не удалять их вообще. Места много не займут.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открытие div блока при первом визите на сайт Nushaba Общие вопросы Javascript 28 20.12.2013 21:24
Решение проблемы кодировок для AJAX и PHP без iconv (cp1251 в AJAX) Serge Ageyev AJAX и COMET 10 24.04.2013 20:48
Как организовать RichEdit arma Элементы интерфейса 2 18.02.2010 14:57
О наследовании событий, или как корректно его отменить. JCShen Events/DOM/Window 8 09.02.2010 00:00
Как правильно послать XML в POST запросе LowCoder AJAX и COMET 10 15.07.2009 23:20