web-dev-qa-db-ja.com

複数の送信ボタンphpの異なるアクション

2つの個別の送信ボタンを使用するWebサイトを開始しました。1つは入力されたデータを取得し、同じ画面に表示するための計算を行います。私はこれを正常に動作させました:

<form id="form1" name="form1" method="post" onsubmit="" onreset="" action="programname.php">
<input type="submit" name="calc" value="Find Angle">

そして、私は使用します:

if (!isset($_POST['submit'])){
Do actions, display calculations}

ここで、入力したデータを引き続き取得し、別のアドレスに移動する2番目の送信ボタンが必要です。これを行うエレガントな方法はありますか?

28
Joegramming

新しい送信ボタンにonclickメソッドを追加して、フォームのアクションを変更してから送信できます。

<script type="text/javascript">
  function submitForm(action) {
    var form = document.getElementById('form1');
    form.action = action;
    form.submit();
  }
</script>

...

<form id="form1">
  <!-- ... -->
  <input type="button" onclick="submitForm('page1.php')" value="submit 1" />
  <input type="button" onclick="submitForm('page2.php')" value="submit 2" />
</form>
48
Travesty3

ボタンのプロパティでformaction = "page1.php"を使用して、フォームアクションを変更できます。

<form id="form1" name="form1" method="post" onsubmit="" onreset="" action="programname.php">
    <input type="submit" name="calc" value="Find Angle">

    <input type="button" type="submit" formaction="page1.php">Action 0</button>
    <input type="button" type="submit" formaction="page2.php">Action 1</button>
</form>

注:ボタンタグのformaction属性は、Internet Explorer 9以前のバージョンではサポートされていません。

15
Pradeep

複数の送信ボタンを処理する最良の方法は、アクションスクリプトでswitch caseを使用することです

<form action="demo_form.php" method="get">

    Choose your favorite subject:

    <button name="subject" type="submit" value="html">HTML</button>
    <button name="subject" type="submit" value="css">CSS</button>
    <button name="subject" type="submit" value="javascript">Java Script</button>
    <button name="subject" type="submit" value="jquery">jQuery</button>

</form>

アクション/サーバー側スクリプト:

demo_form.php

<?php

switch($_REQUEST['subject']) {

    case 'html': //action for html here
                break;

    case 'css': //action for css here
                break;

    case 'javascript': //action for javascript here
                        break;

    case 'jquery': //action for jquery here
                    break;
}

?>

参照: W3Schools

8
Shailesh Sonare