如何将表单提交到两个PHP处理器页面?

时间:2014-11-28 04:47:39

标签: php html forms

我没有2个表格。我没有2个提交按钮。我有1个表单和1个提交按钮。我希望在提交表单时能够执行2个不同的操作(或进程)。我真的不想将这两个动作放在同一个php处理器文件中。原因是因为表单中有2个复选框。

如果选中其中一个复选框,我想做1个动作/过程。如果检查了另一个,我想做一个不同的动作/过程。如果两者都被选中,我想做两个动作/过程。我使用它的方式是使用3个PHP处理器文件。一个用于进程A,另一个用于进程B,第三个用于进程A和进程B在同一个文件中,但是这个第三个文件不是很漂亮或干净。

我必须将一堆变量更改为进程B的其他变量,而且每次我必须更新前两个时都需要更新3个文件...或者它很麻烦有麻烦每次我必须更新进程A或进程B时更新2个文件。仅仅维护2个处理器页面就好了。

那么如何使用2个不同的处理器文件一个接一个地运行一个进程,一个表单有一个提交按钮(基于2个复选框)?

实际上让我更深入地解释一下。它实际上是我正在做的3个过程。每次按下提交时发生的默认值。如果检查了2个复选框中的任何一个,则无关紧要。表单的其余部分由默认的php进程处理,该进程与表单位于同一文件中。表格提交给自己。

默认进程运行后,它会检查2个特定复选框的已选中复选框。如果选中一个,它会将标题位置重定向到另一个文件,这是另一个处理器文件。如果选中另一个复选框,它会将标题位置重定向到另一个不同的文件。如果两者都被选中,它会将标题位置重定向到另一个不同的文件,该文件具有其他两个外部处理器文件的重复代码。

以下是我使用的网页数量:

1) form page which also has process 1
2) process 2 page
3) process 3 page
4) process 4 page which is process 2 and 3 together

如果可能,我想摆脱流程4页面,这是我的问题。

该流程在表单页面中的显示方式:

if (isset($_POST['submit'])) {
  if (is_numeric($_POST['id'])) {
    //bunch of processes
    //after all above proccesses done, do redirect to more processes or no more processes
    if ($checkboxone !== "" && $checkboxtwo !== "") {
      header("Location: externalactionone-and-externalactiontwo.php?id=$id");
    }
    else if ($checkboxone == "" && $checkboxtwo !== "") {
      header("Location: externalactiontwo.php?id=$id");
    }
    else if ($checkboxone !== "" && $checkboxtwo == "") {
      header("Location: externalactionone.php?id=$id");
    }
    else {
      header("Location: gosomewhereelse.php");
    }
  }
  else {
    //other process
  }
}
else {
  //other process
}

修改

基于给出的答案和我对它所做的修改,这就是它的样子,但它仍然不起作用。操作和目标已更改,但不会发生任何提交。我也怀疑它是在做多个动作和目标更改并一个接一个地(连续)提交到多个iframe。

<form id="editform" class="form-style clearfix" action="" target="" method="post">
<!--bunch of other fields-->
<input type='checkbox' id="dothis" name="dothis" value='yes' />
<input type='checkbox' id="dothat" name="dothat" value='yes' />
<input type="button" id="submittheform" class="btn" name="submit" value="Submit" />
</form>
<iframe name="frame_result1" width="0" height="0" frameborder="0"></iframe>
<iframe name="frame_result2" width="0" height="0" frameborder="0"></iframe>
<iframe name="frame_result3" width="0" height="0" frameborder="0"></iframe>
<script type="text/javascript">
$(document).ready(function(){
$("#submittheform").click(function(){
    $("form#editform").attr('action', 'submit1.php?id=<?php echo $id; ?>');
    $("form#editform").attr('target', 'frame_result1');
    $("form#editform").submit();

    var chk1="0",chk2="0";
    if($("#dothis").prop('checked') == true){
        chk1="1";
    }
    if($("#dothat").prop('checked') == true){
        chk2="1";
    }
    if(chk1==="1"){
        $("form#editform").attr('action', 'submit2.php?id=<?php echo $id; ?>');
        $("form#editform").attr('target', 'frame_result2');
        $("form#editform").submit();
    }
    if(chk2==="1"){
        $("form#editform").attr('action', 'submit3.php?id=<?php echo $id; ?>');
        $("form#editform").attr('target', 'frame_result3');
        $("form#editform").submit();
    }
});
});
</script>

1 个答案:

答案 0 :(得分:2)

您可以使用一些jquery代码来实现这一点,假设您的表单如下

<form action="" id="form1">
    <input type="checkbox" id="chk1"/>
    <input type="checkbox" id="chk2"/>
    <input type="button" id="btn1" value="submit">
</form>

<script type="text/javascript">
  $(document).ready(function(){
     $("#btn1").click(function(){
       var chk1="0",chk2="0";
       if($("#chk1").prop('checked') == true){
          //do something
          chk1="1";
        }
        if($("#chk2").prop('checked') == true){
          //do something
          chk2="1";
        }
        if(chk1==="1")
        {
            $("#form1").attr('action', 'page1.php');
            $("#form1").submit();
        }
        if(chk2==="1")
        {
            $("#form1").attr('action', 'page2.php');
            $("#form1").submit();
        }
     });
  });
</script>