我设计了一个用户配置文件表单,这是一个很复杂的长表单。 在用户提交并保存之前,需要验证表单。
以下是问题:
当表单保存到DB中时,涉及多个表。 现在我想介绍一个名为“保存表单”的函数,它在内部不验证表单,只保存用户输入的内容。
存在潜在问题,例如:
Q1>如何保存临时数据?
Q2>如果用户保存临时数据,我该怎么办? 没有提交表格然后退出。 此功能类似于Gmail提供的草稿功能。
答案 0 :(得分:8)
您可以为有兴趣保存的字段创建会话。例如
$this_form = array(
'field1' = 'value',
'field2' = 'value2',
);
然后将其保存到会话:
$_SESSION['this_form'] = $this_form;
如果您想要非常懒惰,可以在会话中保存$_POST
或$_GET
变量。
$_SESSION['my_post'] = $_POST;// or $_GET depending on your form.
当然,在你验证它们并进行常规接种之前,你知道不要对它们做任何事情。
您可以稍后通过调用它来重新读取保存的会话变量。
即
echo $_SESSION['this_form']['field1'];
完成会话后,您可以使用unset命令将其删除:
即
unset $_SESSION['this_form']
您还可以使用会话功能:
答案 1 :(得分:5)
<强> Q1 强>&GT;如何保存临时数据?
有几种方法可以做到这一点。您可以将其保存到其他表。您也可以(可能更受欢迎)将其保存到与完成的配置文件相同的表中,但为此目的通过列将其标记为不完整。此列可以命名为complete
。如果个人资料不完整,则会将其设置为0
或false
。如果已完成,则会将其设置为1
或true
。然后,您可以根据它进行查询。
然后,您可以通过任何所需的程序“验证”数据,并根据需要将列设置为1
或true
。
<强> Q2 强>&GT;如果用户没有保存临时数据,我该怎么办? 提交表格然后退出。此功能看起来像草稿 Gmail提供的功能。
上面的答案也应该达到这个目的。
如果您需要重新加载数据并允许用户继续填写不完整的表单,您需要获取某种标识符以允许它。您可以通过设置cookie或通过表单顶部输入的某种唯一标识符来完成此操作 - 例如SSN,电话号码,学生ID#等(或组合)。
如果您正在寻找Gmail草稿功能等功能,则需要实施某种AJAX调用,每隔X秒/分钟自动触发一次以自动保存数据。