3

我有一个字段很少的表格。现在单击“另存为草稿”按钮,ajax 调用将开始,填充的字段将存储在数据库中。

但是 当用户再次点击“另存为草稿”时,这一次应该更新之前的字段而不是创建新字段。

所以我想了一些补救措施

-。制作一个隐藏字段并在页面加载时以唯一编号加载它,并将其存储在 SESSION 变量中。

并且在将唯一编号与会话变量进行比较后,如果编号相同,则更新 sql 中的字段,否则在 sql 中创建一个新字段。

上述解决方案可以还是人们使用不同的解决方案?

4

3 回答 3

3

为什么不呢,在第一次 Ajax 调用“保存草稿”时检索一些非常简单的 JSON,例如

{ field_id: 1 }

然后将该值保存在 DOM 中,方法是将其放入输入中,或者更好 - 只需将其存储在变量中即可。然后,您可以在随后的草稿/最终保存中检查此变量是否存在,并更改您的 Ajax 帖子以解决此问题。您可以在表中添加一个额外的布尔列,例如final跟踪帖子的阶段。从服务器端的角度来看,您可以通过调用MySQLi 的 insert_id() 方法轻松获取 MySQL 插入的值,例如

一个非常好的附加操作可能还涉及使用该pushState方法来更新 URL(例如 to index.php?draft=1)。这样,即使用户单击了返回按钮,他们也可以返回到正确的页面,您可以为他们提取他们保存的数据。

于 2013-07-26T18:10:20.697 回答
1

1 解决方案 = 将字段值添加到数据库表 = 再次提交时比较值,如果您的值匹配,则不进行任何更改,否则不会进行更改,因此您可以更新 mysql。

2 Solition = 其他解决方案可能是将数据存储在 Sessions 中,当用户完成编辑后将其添加到 DBase tbl。

第三种解决方案将数据存储到任何平面文件系统,然后使用它添加到 mysql 表中。

第四种解决方案允许在表单中编辑字段,以便用户可以随时更改数据,如果他想编辑它。

于 2013-07-26T18:10:48.087 回答
1

如果您的数据库中有一个自动递增的字段,您可以获得该字段的 id。当用户保存为草稿时,您可以将更改存储在数据库中,并将记录的 id 存储在会话中。然后,当用户再次保存为草稿时,您可以使用该 ID 更新数据库中的正确行。

您可以将 id 存储在表单中,但随后用户可以轻松(甚至可能不小心)使用错误的 id 发布数据并更新错误的行。

于 2013-07-26T18:11:59.320 回答