簡體   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