0

我有一个用户可以用来提交报告的表单。由于其中一个字段是一个文本区域,他们可以在其中放置很长的文本,我想插入一个每隔一分钟左右自动保存条目的功能,但我不确定这背后的原理。

我能想到的解决方案是:

  1. 将数据库中的当前条目自动保存为版本(例如,Entry_id = 1、Version = 1、Visibility = FALSE)
  2. 1 分钟后,再次自动保存为 Entry_id = 1, Version = 2, Visibility = FALSE)
  3. 继续重复上述操作,直到:
  4. 用户按下“保存”。在这种情况下,将最后一个版本的可见性更改为 TRUE,并删除所有其他版本(所有 entry_id == 1 和 Visibility == FALSE 的条目)
  5. 用户选择不保存(“丢弃”)。在这种情况下,我删除了 entry_id == 1 和可见性 == FALSE 的所有条目

两个考虑:

  • 如果客户正在编辑现有条目,上述内容也应该很好用。
  • 我不能再使用 entry_id 作为主键了

这似乎在我的脑海中起作用,但我想知道我是否正在使用一个非常复杂的过程,并且有更好的过程?

谢谢,P

4

1 回答 1

2

加载表单后,将触发一个函数,它会在每 10 秒(或您提到的任何时间)后重复一次。该函数将采用您的形式,将其序列化并发送到服务器端脚本(很可能是 PHP),并且该 PHP 脚本将在数据库中插入该记录(通过 AJAX)并返回该插入记录的主键(id)。现在,当函数第一次执行时,它使用以下参数插入记录:

Entry_id = 1 (or whateverthe primary key at which the record is saved), 
Version = 1, 
Visibility = FALSE

此函数返回一个主键。所以现在你必须在你的自动保存函数开始时检查是否返回主键(插入记录),如果这个键已经返回,那么它会再次让你的表单序列化它并发送到另一个服务器端脚本(更新函数)中的函数以及从第一次自动保存调用返回的主键作为参数,并根据数据库中的此键更新记录。

现在用户继续输入内容,自动保存功能在每 10 秒后继续触发,并且正在插入数据(第一次)并不断更新。一旦用户按下表单上的保存按钮,再次获取该主键并使用这些值更新该记录:

Version = 1, 
Visibility = TRUE
于 2013-11-06T12:48:44.983 回答