PHP - 在同一页面上连续提交

时间:2014-07-13 00:13:09

标签: php forms submit

我可以连续提交并保持在同一页面上吗?

我需要一个表单来填充,然后是第二个,然后是第三个,依此类推......并且必须根据答案触发不同的函数和表单。例如:

  <form method="post">
       Sex?<input type="text" name="sex">
           <input type="submit" name ="submit_sex" value="Submit">
 </form>


<?php
 if(isset($_POST['submit_sex'])){
         echo("Fist submit done");
      ?>

         <form method="post">
             Age?<input type="text" name="age">
                 <input type="submit" name ="submit_age" value="Submit">
          </form>
     <?php
         if(isset($_POST['submit_age'])){
             echo("Second submit done");
          }
 }
 ?>

2 个答案:

答案 0 :(得分:1)

是的,你可以,但如果使用Ajax,它会看起来更漂亮/更方便用户使用。但是,在您的情况下,使用条件语句来检测要显示的表单会更有效,并且为了绝对最小输入验证,您至少应检查空值:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    <?php
        if(isset($_POST['third_question']) && $_POST['third_question'] != "") {
            // store value of $_POST['third_question'] in a cookie
            // Last question answered, do what you need to next with all the values
        } elseif(isset($_POST['second_question']) && $_POST['second_question'] != "") {
            // store value of $_POST['second_question'] in a cookie
            Third Question? <input type='text' name='third_question' />
        } elseif(isset($_POST['first_question']) && $_POST['first_question'] != "") {
            // store value of $_POST['first_question'] in a cookie, then display next quesion
            Second Question? <input type='text' name='second_question' />
        } else {
            First Question? <input type='text' name='first_question' />
        }
    ?>
    <input type="submit" name="submit" value="Submit" />
</form>

答案 1 :(得分:0)

我认为在浏览器端执行此操作会更有意义。你可以这样做:

  <form method="post">
     <div id="sexInput">
       Sex?<input type="text" name="sex" />
           <input type="button" name="submit_sex" value="Submit" onClick="showAge()" />
     </div>
     <div id="ageInput" style="display:none;">
       Age?<input type="text" name="age" />
           <input type="submit" value="Submit" />
     </div>
 </form>

并有一个隐藏sexInput div的函数showAge()并显示ageInput div。通过这种方式,它实际上是一个表单,最后一次全部提交,但一次只向用户显示一个部分。