【问题标题】:Auditing a MySQL table and displaying changes only after approval审核 MySQL 表并仅在批准后显示更改
【发布时间】:2011-03-06 23:32:25
【问题描述】:
我有一个小型 Web 应用程序,其中包含一些表格,用户可以在其中发布和编辑数据。我还有一个应用程序管理员来管理新发布或编辑的数据。我想做的是审核每个表并仅在管理员批准后才显示数据。
应用程序流程是这样的:用户在某个表中输入信息;管理员将被注意到,他将批准或拒绝该信息。如果批准,信息将显示在前端。一旦信息被批准,以后可以对其进行编辑。当用户编辑信息时,管理员再次被注意到,他必须批准或拒绝编辑的信息,但之前批准的信息必须在网站上仍然可用。
我还需要保留每个版本的更改信息(例如 v1、v2、v3 等)。
在您看来,完成这项工作的最佳方法是什么?
谢谢。
【问题讨论】:
标签:
php
mysql
audit-trail
【解决方案1】:
- 使用字段
IS_FOR_DISPALY 默认编号的帖子扩展您的表格。
-
使用包含以下字段的批准创建表:post_record_id、new_content、aprove_status、aprove_date、aprove_person、entered ...。
- 新帖子应该转到 IS_FOR_DISPLAY = NO 的帖子和 APROVE_STATUS = NULL 的批准,
- 管理员应该能够按 APROVE_STATUS 排序/查看,何时为 NULL - 做出决定,是 - 还应更改 IS_FOR_DISPLAY = YES 并完成初始审批后流程
- 编辑已批准的帖子时,应在 aprovals 表中创建新记录,其中包含新内容,APROVE_STATUS = NULL
- 当管理员查看那些 NULL 时,通过 POST_REC_ID 和 IS_FOR_DISPLAY = YES 在匹配记录中应该知道有 EDIT,并根据新旧内容,谁,何时等做出决定,如果是,旧内容可以存储在历史表如果需要,新内容应该放在posts表中,IS_FOR_DISPLAY已经是YES
- 如果任何批准决定为否 - 不更改发布表
这只是一般的工作流程
【解决方案2】:
创建历史和队列表?
编辑转到队列表,如果管理员批准 queue->real->history...