Web应用程序中的“撤消删除”?

时间:2010-06-07 11:55:26

标签: php mysql transactions undo undo-redo

按下删除按钮后,我看到越来越多提供撤消选项的网站。如何在按钮后面完成逻辑?

该项目是否已被javascript删除,并且用户屏幕上显示“消失”,并添加了计划删除,这使用户有时间撤消它或它是如何工作的?

为用户提供撤消功能的其他选项是什么?

3 个答案:

答案 0 :(得分:11)

这实际上取决于应用程序的结构。

一种常见的方法是不删除记录/项目,但在内部将其标记为已删除(使用布尔列),将其从所有查询和列表中排除。

如果您有节点结构,则可能需要将项目移动到“回收站”节点,从该节点可以将项目还原到其原始位置。

在两种版本中,删除的项目都会不时清理 - 根据时间(3周后删除)或音量(保留最多50个已删除的项目,然后开始删除最旧的项目。)

答案 1 :(得分:5)

我同意Pekka,但另外建议您使有问题的列成为日期时间字段,而不是布尔值(称之为“已删除”或其他内容)。

这样可以轻松启用“n周后删除”功能,并让您实际“撤消”而不是简单地“取消删除”。

答案 2 :(得分:4)

在HTML5中会有一个Undo implementation

但是,正如Pekka所说,你的应用程序必须跟踪“撤消”它所做的工作。一种技术解决方案是保存文档或数据的修订。因此,当用户想要撤消某些内容时,只需加载以前的修订版