Php 是否另存为草稿,然后更新草稿?

Php 是否另存为草稿,然后更新草稿?,php,html,mysql,ajax,Php,Html,Mysql,Ajax,我有一个字段很少的表单。 现在单击“另存为草稿”按钮,ajax调用将启动,流行字段将存储在数据库中 但是当用户再次单击“另存为草稿”时,此时应更新以前的字段,而不是创建新字段。 所以我想了一些补救办法 -。创建一个隐藏字段,并在加载页面时使用唯一编号加载该字段,并将其存储在会话变量中 在将唯一编号与会话变量进行比较后,如果编号相同,则更新sql中的字段,否则在sql中创建一个新字段 上面的解决方案可以吗?或者人们使用不同的解决方案?为什么不可以,在第一次调用“save draft”时,检索一些非

我有一个字段很少的表单。 现在单击“另存为草稿”按钮,ajax调用将启动,流行字段将存储在数据库中

但是当用户再次单击“另存为草稿”时,此时应更新以前的字段,而不是创建新字段。

所以我想了一些补救办法

-。创建一个隐藏字段,并在加载页面时使用唯一编号加载该字段,并将其存储在会话变量中

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


上面的解决方案可以吗?或者人们使用不同的解决方案?

为什么不可以,在第一次调用“save draft”时,检索一些非常简单的JSON,例如

{ field_id: 1 }
然后将该值保存到DOM中,方法是将其放入输入中,或者更好地将其存储在变量中。然后,您可以在后续的草稿/最终保存中检查该变量是否存在,并更改Ajax帖子以说明该变量。您可以在表中添加一个布尔列,如
final
,用于跟踪文章的阶段。从服务器端的角度来看,您可以通过调用

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

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

2孤子 =另一种解决方案是将数据存储在会话中,当用户完成编辑后,将其添加到DBase tbl中

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

第四种解决方案
允许在表单中编辑字段,以便用户可以在任何时候编辑数据。

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


您可以将id存储在表单中,但用户很容易(甚至可能意外)使用错误的id发布数据并更新错误的行。

请添加代码以显示您的情况。这不是代码问题,我想问的是如何确定是否必须更新草稿或创建新草稿。我写了一个我想的解决方案,但我想知道其他人做什么。我正在从事一个具有类似功能的项目。我使用隐藏的id字段,并以这种方式识别它。这可能是错误的预期。解决具体问题也是如此,而不是收集意见。所以我建议你把你的问题改写成一个实际需要解决的答案。如果我问代码,人们会认为我在要求他们做我的工作。我只想要方法,标准流程。那么,我应该问谁知道前面的字段是否已经在sql数据库中的标准过程是什么?噢,是的,javascript方式,我完全忘记了!如果用户打开了两个或多个页面,那么使用会话存储行id是否不会产生冲突?有没有办法绕过这个困难?您也可以将它存储在表单中。这不是一个大风险,但它是一个风险。您还可以将实际ID存储在会话中的数组中,并将其存储在表单中。这样,您在表单中拥有正确的ID,但如果ID仍在编辑中且未过时,您仍然可以根据会话进行验证。解决方案1:为什么他需要比较然后更新?最好直接运行更新查询。Wh 2操作—如果一次可以实现相同的操作—解决方案2:在会话中保存不是一个好方法,因为在任何情况下,用户都不会执行最终操作—他将丢失数据。例如,他保存了两次草稿,但没有最终确定系统将在哪个系统中持久化数据库中的数据?解决方案3:我认为存储在数据库中比保存到平面文件系统中更好