2012-05-05 10 views
3

私はあなたの問題を助けてください。 私は自分のホームページに2つの書式を用意しています。私の問題は、私は両方の処理ページを1つしか持たないことです。通常、私は別々のページでこれを行うことができます。しかし、私は同じページでそれをすることが可能かどうかを知りたいです。複数のフォームと1つの処理ページ

わかりました。私がアクションページでフォームAを送信した場合、フォームBの変数の未定義インデックスが存在しない、送信されていない、GETを使用していることは推奨されません。

あなたの時間と忍耐力に感謝します。

答えて

7

これは完全にはわかりません。多くの場合、または/submit.php?action=activateのように、フォーム要素のアクション属性に異なるパラメータが渡されます。

if ($_GET['action'] == 'register') { 
    // Register user 
} else if($_GET['action'] == 'activate' { 
    // Activate user 
} 

しかし、あなたはまた、単に送信ボタンの値を変更する可能性があり、アクションが両方のフォームに同じ属性があります:

だから、あなたはこのようなコードを持っている

if (isset($_POST['submit'])) { 
    if ($_POST['submit'] == 'register') { 
    // Register user 
    } else if($_POST['submit'] == 'activate') { 
    // Activate user 
    } 
} 
0

同じページでも同じことができます。どちらのフォームでもactionを同じにする必要があります。

ソース形式によっては、Form AForm Bの個別の機能を記述する必要があります。

@Amiが使用したような動作のパラメータで確認できます。しかし

if ($_GET['action'] == 'register') { 
    // Register user 
} else if($_GET['action'] == 'activate' { 
    // Activate user 
} 

、あなたはまた、単に送信ボタンの値を変更することができますし、両方のフォームに同じアクションパラメータを持っている:

/submit.php?action=registerまたは/submit.php?action=activate

だから、あなたは、このようなコードを持っています:

if (isset($_POST['submit'])) { 
    if ($_POST['submit'] == 'register') { 
    // Register user 
    } else if($_POST['submit'] == 'activate') { 
    // Activate user 
    } 
} 
+0

オーケー..私は、フォームAを提出する場合は、アクションページに、文句を言わない未定義提出されていないフォームBの変数のインデックス、およびofcourseの使用がありますGETはアドバイスされていません...ありがとう –

+0

@dotunoyesanmi、あなたのコードを分岐する必要があります。 – Ami

+0

@ami ...あなたのコードをどういう意味なのか説明してください。 –

2

別のform_processスクリプトを作成し、フォームページに組み込みます。

if(!empty($_POST)){ 
include 'form_process.php'; 
} 

form_process.phpには、エコーまたはプリントアウトのないクラス/機能のみを含める必要があります。

代わりに、アクションURLを同じページに設定してから、適切なページにリダイレクトすることができます。

<form id="add-profile-form" action="form_controller.php" method="post"> 
    <input type="hidden" name="act" value="adding"/> 
    <!-- form 1. --> 
</form> 

<form id="edit-profile-form" action="form_controller.php"> 
    <input type="hidden" name="act" value="editing"/> 
    <!-- form 2. --> 
</form> 

form_controller.php

if(isset($_POST['act']){ 
    if($_POST['act'] == 'adding'){ 
     //process form1 
    }else if($_POST['act'] == 'editing'){ 
     //process form2 
    } 

    header("Location: success.php"); 
} 
関連する問題