使用户能够从最后保存的页面开始

时间:2014-10-08 18:35:24

标签: php mysql forms pdo multipage

我有一个5页的PHP表单,我想让用户可以从上次保存的页面开始填写表单。 (数据应该每页保存到数据库中,如果由于任何原因用户无法完成所有页面,他将能够继续而不是再次重新填充所有页面)。这些是我要做的步骤:

  1. 每页保存用户数据,因此当他点击"保存并继续"页面末尾的按钮,所有输入的数据都将保存在DB中(此部分确定,我已经执行了此步骤)

  2. 当用户成功登录时,我会检查表格"回答"在DB中查看用户是否已经输入了一些数据(在每个页面中我都有一些强制性问题,所以我检查它们在DB中是否为空,例如:" q6"在page1中是必填字段,如果是这样的话DB中的字段(列q6)不是"空"这意味着用户已经回答了第一页,他应该能够从第二页开始。然后我将检查下一页中的另一个必填字段,例如q12,如果表格中的列" q12"不为空,则表示用户也回答了第二页,他可以从第3页开始,依此类推......

  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

    有人可以请帮助我这个代码有什么问题吗?

    谢谢,

2 个答案:

答案 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现在用户可以继续从上次保存的页面:)(我希望我可以清楚地解释那些有类似问题的人)