我的表格很少。 现在点击“另存为草稿”按钮,ajax调用将进入,poplulated字段将存储在数据库中。
但当用户再次点击“另存为草稿”时,此时应更新上一个字段,而不是创建新字段。
所以我想了一些补救措施
- 创建隐藏字段并在加载页面时使用唯一编号加载它,并将其存储在SESSION变量中。
在将唯一编号与会话变量进行比较后,如果编号相同则更新sql中的字段,否则在sql中创建一个新字段。
上述解决方案是正确的还是人们使用不同的解决方案?
答案 0 :(得分:3)
为什么不在第一次调用'save draft'的Ajax上找回一些非常简单的JSON,比如
{ field_id: 1 }
然后保存通过将它放在输入中将该值保存在DOM中,或者更好 - 只需将其存储在变量中。然后,您可以在后续草稿/最终保存中检查此变量是否存在,并更改您的Ajax帖子以考虑它。您可以在表格中添加一个额外的布尔列,例如跟踪帖子阶段的final
。从服务器端的角度来看,您可以通过调用MySQLi's insert_id() method例如
非常好的额外触摸可能还涉及使用pushState
方法更新网址(例如index.php?draft=1
)。这样,即使用户单击后退按钮,他们也可以返回到正确的页面,您可以为他们提取已保存的数据。
答案 1 :(得分:1)
1解决方案 =将字段值添加到数据库表 =比较再次提交时的值,如果您的值匹配,则不做任何更改,因此您可以更新mysql。
2 Solition =其他解决方案可能是在Sessions中存储数据,当用户完成编辑后,将它们添加到DBase tbl。
第三种解决方案 将数据存储到任何平面文件系统,然后使用它添加到mysql表中。
第四个解决方案 允许表单中的编辑字段,以便用户可以随时更改数据。答案 2 :(得分:1)
如果数据库中有自动增量字段,则可以获取该字段的ID。当用户保存为草稿时,您可以将更改存储在数据库中,并将记录的ID存储在会话中。然后,当用户再次保存为草稿时,您可以使用该ID更新数据库中的右侧行。
您可以在表单中存储id,但是然后用户可以轻松(甚至可能意外地)使用错误的ID发布数据并更新错误的行。