繁体   English   中英

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

[英]How do I submit a form to two PHP processor pages?

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

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

我必须将一堆变量更改为流程B的其他变量,再加上每次必须更新前两个文件都必须更新3个文件,这很麻烦...或者每次必须更新2个文件时都很麻烦更新进程A或进程B。仅维护2个处理器页面就可以了。

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

实际上让我更深入地解释。 这实际上是我正在执行的3个流程。 默认情况下,每次按下提交时都会发生。 是否选中两个复选框都无关紧要。 表单的其余部分由默认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>

您可以使用一些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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM