2011-10-21 7 views
0

複数のフォームがあり、これらのフォームを処理するために使用する1つのPHPスクリプトがありますが、この場合、submitFormという名前の送信ボタンを持つフォームの数は、警告は1回ではなく3回表示されます。私は何を正しくしていないのですか?1つのPHPスクリプトを使用して複数のフォームを処理する方法

NB。私はこれが理にかなってほしいと思いますか?私は、特定のフォームの提出をクリックすると

htmlコード

<form action="" name="form1" method="post"> 
<input type="text" value="" /> 
<input type="text" value="" /> 
<input type="text" value="" /> 
<input type="text" value="" /> 
<input type="Submit" value="Submit Form" name="submitForm" /> 
</form> 

<form action="" name="form2" method="post"> 
<input type="text" value="" /> 
<input type="text" value="" /> 
<input type="text" value="" /> 
<input type="text" value="" /> 
<input type="Submit" value="Submit Form" name="submitForm" /> 
</form> 

<form action="" name="form3" method="post"> 
<input type="text" value="" /> 
<input type="text" value="" /> 
<input type="text" value="" /> 
<input type="text" value="" /> 
<input type="Submit" value="Submit Form" name="submitForm" /> 
</form> 

PHPスクリプト

<?php 
    if (isset($_POST['submitForm'])) { 

    echo('<script>alert("Form Submitted")</script>'); 

    } 
?> 
+1

あなたは「それはすべてのフォームを提出する」との意味でしょうか?私が見ている3つの形式は、phpに送られない名前以外は同じです。 PHPでのテストでは、$ _GETの代わりに$ _POST配列をチェックします。 – Leto

+0

私は質問する必要があります質問は、各フォームを処理する複数のPHPスクリプトを記述するのではなく、特定のフォームをPHPに渡す方法です。 –

+0

が回答を試みました。私はあなたのあいまいな質問を最後に得たと思っています –

答えて

3

の各

<input type="hidden" name="step" value="1" /> 

、その後に隠しフィールドを追加しますこれは、PHPに多くのフォームを送信します。コピー、ペースト、テスト、および学習。二番目の形式を最初のフォーム、E、F、G、第二形態及びI、J、K、第三の形態のためのLのための時間、B、C、Dを使用し、提出

<?php 
    if (isset($_POST['submitForm'])) { 

    print_r($_POST); 

    } 

?> 
<form action="" name="form1" method="post"> 
<input type="text" value="" name="A" /> 
<input type="text" value="" name="B" /> 
<input type="text" value="" name="C" /> 
<input type="text" value="" name="D" /> 
<input type="Submit" value="Submit Form" name="submitForm" /> 
</form> 

<form action="" name="form2" method="post"> 
<input type="text" value="" name="A" /> 
<input type="text" value="" name="B" /> 
<input type="text" value="" name="C" /> 
<input type="text" value="" name="D" /> 
<input type="Submit" value="Submit Form" name="submitForm" /> 
</form> 

<form action="" name="form3" method="post"> 
<input type="text" value="" name="A" /> 
<input type="text" value="" name="B" /> 
<input type="text" value="" name="C" /> 
<input type="text" value="" name="D" /> 
<input type="Submit" value="Submit Form" name="submitForm" /> 
</form> 

が得られます次の出力:

Array 
(
    [A] => e 
    [B] => f 
    [C] => g 
    [D] => h 
    [submitForm] => Submit Form 
) 
+0

これは私の@Herbertとどう違うのですか? –

+0

私はただ問題を修正しましたか?それはまだ意味をなさないが、私はすべてのフォームの上にPHPスクリプトを移動し、今はそれが動作するのですか?私は、スクリプトにはそれぞれのフォームがスクリプトのコピーを持っていたので、各フォームにも複製されていると思います!私は知りませんが、今働いています! Thanx –

+1

申し訳ありません@Jay。私はちょうど今まであなたのコメントを見ませんでした。私はあなたがそこにあなた自身の質問に答えたと思います。主な違いは、すべての入力フィールドに名前が付いていることです。明らかに、2番目の違い(元の質問では分かりません)は、コードが最上位にあることです。とにかく、あなたはそれが働いてうれしいです。 – Herbert

8

は、それがすべてのフォームを送信します。

これは当てはまりません。
フォームに適切な書式が設定されたら、ブラウザは現在のフォームのみを送信します。
(ここではPHPは何もしていません)

ただし、その場合はページ全体が再読み込みされます。それは大丈夫です - フォームを送信すると、ページがリロードされます。別の行動が必要な場合は、あなたの希望を説明する必要があります。

名前のないサーバーに送信されるテキストフィールドはありません。

私は質問しておかなければならないことは、それぞれのフォームを扱うために複数のPHPスクリプトを書くのではなく、特定のフォームをPHPに渡す方法です。

よく、これらのフォームを区別する方法をお尋ねしたいと思うようです。

はPHP

if ($_POST['step'] == 1) { 
    //first form 
} 
if ($_POST['step'] == 2) { 
    //second 
} 
+1

HTMLを使用してフォームのcolを送信していません。あなたが私の投稿を正しく読んで私のコードを読んだら、私はフォームを処理するためにPHPを使用していることに気付くでしょう...フォームが提出されると、PHPはフォームを処理しますが、これを行うと、それは私が何を意味するか –

+0

"PHPを使って多数のフォームを1つ送信する**"はあなたの質問の正確なタイトルです。自分を責めます。あなたのフォームについては、あなたの言葉を証明するための関連する再現可能なコードをここに投稿してください。 –

+0

こんにちはCol ...私は手動で各フォームのステップを追加する必要がありますか?つまり、10個のフォームがある場合、ifsステートメントを10回追加する必要がありますか?もしそうなら、それはフォームがdbから動的に生成されるので問題になるでしょう! –

1

@Jay

実際にそのハードではありません。

フォーム名を入力すると、作業が完了します。 DOMは残りを行います。

あなたの機能(作成/更新/取得/削除)を行うPHPブロックを書く どちらのボタンもクリックすると、デフォルトで一緒に囲まれた要素だけが送信されます。


if(!empty($_POST)){ 
    if(isset($_POST['submit'])){ 
     print "<pre>"; 
     var_dump($_POST); // write your code here as you would 
     print "<pre>"; 
    } 
} 

上記のフォームでこれを試してみてください。

0

動的フォームが必要な場合は、次のコードを試してみてください。 while文はDBからデータを取得するように変更でき、代わりにforeachを使用することができます。あなたはこれを知って欲しいと思います。 ここでは、10個の動的フォームについてwhile($ n < 10)を使用しました。 別のフォーム名が必要な場合は、以下のようにtagを使用することもできます。

<form action="" name="form<?=$n?>" method="post"> 

これにより、form1、form2などの別々のフォーム名が作成されますが、ここでは必要ありません。私は5行目をクリックし、出力を持つ

<?php 
if (isset($_POST['submitForm'])) { 
    echo '<pre>'; 
    print_r($_POST); 
    echo '</pre>'; 
} 
$n=0; 
while($n<10) { 
    $n++; 
    ?> 
    <form action="" name="form1" method="post"> 
     <input type="text" value="" name="A" /> 
     <input type="text" value="" name="B" /> 
     <input type="text" value="" name="C" /> 
     <input type="text" value="" name="D" /> 
     <input type="Submit" value="Submit Form" name="submitForm" /> 
    </form> 
    <?php 
} 
?> 

サンプル・ページ..

関連する問題