在PHP CRUD应用程序中撤消

时间:2013-12-15 01:06:21

标签: php mysql crud

在PHP CRUD应用程序中实现撤销功能的最佳方法是什么?我能够提出的唯一解决方案是在我的数据库中使用一种定期擦除的缓冲表。

如果用户在删除记录后单击“撤消”按钮,则最后一次更改的ID将传递给处理程序,该处理程序将拉取缓冲区记录并将其恢复到该数据类型的主表中。如果在4或5分钟内没有完成“撤销”,收割者脚本将丢弃该条目。

这听起来可行吗?有没有更好的方法来实现这一目标?

3 个答案:

答案 0 :(得分:3)

您可以在数据库中使用标记字段标记要删除的行。

你可以设置任务(linux中的crontab)删除所有行,删除标志设置为true,时间差>到5分钟。

答案 1 :(得分:0)

我已经学会了不删除任何内容,但只需像Ignacio Ocampo所说的那样使用数据库中的标志列来表示状态。默认情况下,将状态列设置为打开。如果您的客户端单击您的删除按钮,只需将该记录状态列更新为void或删除..

在执行此操作时,您需要更新数据请求以仅提取状态列设置为打开的那些记录。这样就不会丢失数据,也不会丢失。

所有撤消或重做(如果适用)可以将打开状态重置为 - 或按时间戳列排序的+ 1记录。

如果数据库空间非常宝贵,并且您需要删除旧数据,那么crontab确实有效,但我更喜欢简单的phpmyadmin conjob来循环一个文件,该文件将擦除早于time()的所有void或已删除记录 - '(最后一个cron run)。

答案 2 :(得分:0)

根据您正在构建的内容和方式,您可能还需要考虑使用以下解决方案之一。

1)纯PHP CRUD解决方案将与您提到的一致,也可能在客户端存储cookie以跟踪正在执行的操作。每个操作都会创建一个新cookie,然后您的应用程序只需按日期和时间对Cookie进行排序。您还可以将cookie设置为在x时间后自动过期。 (虽然我会在x步之后过期,而不是时间)

2)如果你能够使用HTML5本地存储(http://www.w3schools.com/html/html5_webstorage.asp)以及一些Javascript将是完美的,因为你不必等待服务器响应每次“撤消”是点击,因为所有处理都将在本地处理。