我有一个5页的PHP表单,我想让用户可以从上次保存的页面开始填写表单。 (数据应该每页保存到数据库中,如果由于任何原因用户无法完成所有页面,他将能够继续而不是再次重新填充所有页面)。这些是我要做的步骤:
每页保存用户数据,因此当他点击"保存并继续"页面末尾的按钮,所有输入的数据都将保存在DB中(此部分确定,我已经执行了此步骤)
当用户成功登录时,我会检查表格"回答"在DB中查看用户是否已经输入了一些数据(在每个页面中我都有一些强制性问题,所以我检查它们在DB中是否为空,例如:" q6"在page1中是必填字段,如果是这样的话DB中的字段(列q6)不是"空"这意味着用户已经回答了第一页,他应该能够从第二页开始。然后我将检查下一页中的另一个必填字段,例如q12,如果表格中的列" q12"不为空,则表示用户也回答了第二页,他可以从第3页开始,依此类推......
以下是代码的一部分:(为了缩短代码,我只是复制条件以检查用户是否回答了第一页,我省略了其他条件以检查下一页中的空字段)
// If username& password found in DB, LOGIN SUCCESSFUL
$_SESSION['SESS_MEMBER_ID'] = $result->mem_id;
$_SESSION['SESS_USERNAME'] = $result->username;
$_SESSION['SESS_LAST_NAME'] = $result->password;
$result = $conn->prepare('SELECT * FROM answer where username = :username');
$result->execute(array(':username' => $username));
$row = $result->fetch(PDO::FETCH_OBJ);
if(empty($row->q6)){ //if user didn't answer q6 (which is required to submit the first page and go to 2nd page
try{
$stmt2 = $conn->prepare('INSERT INTO answer(username) VALUES(:username)');
$stmt2->execute(array(':username' => $username));
}catch(PDOException $e) {
echo 'Error: ' . $e->getMessage();
}
header("location: home.php"); //homepage where user can click on the link to start filling the form in page1.php
exit();
}else{ //If q6 had already an answer in database, it means that user filled and saved the first page before, so he should be able to continue form the second page
header("location: page2.php");
exit();
}
}else {
//Login failed
$errmsg_arr[] = 'user name and password not found';
$errflag = true;
if($errflag) {
$_SESSION['ERRMSG_ARR'] = $errmsg_arr;
header("location: index.php");
/* exit();*/
}
}
这对于第一次填写表单的用户来说非常有效(他的用户名输入到表格中#34;回答#34;当他登录时,他将被重定向到home.php,在那里他可以找到链接开始填写表单(page1.php),但问题是,如果他填写第一页,点击"保存并继续",他将被重定向到第二页,如果他退出表格(例如,如果他不小心关闭了窗户),然后再次登录,他被重定向到 page1.php页面内容.php
有人可以请帮助我这个代码有什么问题吗?
谢谢,
答案 0 :(得分:0)
在page1.php中,您可以在数据库中检查信息是否已由用户填写,如果是,则可以将其重定向到page2.php。同样,在page2,page3,page4.php
中答案 1 :(得分:0)
YESSSSSSSSS,我找到了它:DD
问题:我检查了page2.php开头的第一页的值,如果找到一个空字段(必填字段),它会重定向到page1.php,这正是点...(因为当用户谁已经填满了第一页,如果第二次登录,他必须能够从第2页继续,但这次检查打扰了一切..
解决方案:所以,我只是在每个页面的末尾使用了jquery验证插件..并删除了我在下一页开头的验证检查部分(例如,验证q1-q7在page1.php的末尾和删除检查部分在page2.php的开始...所以,它没有再重定向到page1.php现在用户可以继续从上次保存的页面:)(我希望我可以清楚地解释那些有类似问题的人)