2012-05-05 4 views
3

제발 문제와 함께 당신의 도움이 필요합니다. 홈페이지에 두 가지 양식이 있습니다. 사용자가 다른 시간에 작성하고 제출하기를 좋아할 것입니다. 내 문제는 두 가지 모두에 대해 하나의 처리 페이지 만 갖고 싶습니다. 일반적으로 저는 이것을 별도의 페이지에서 할 수 있습니다. 하지만 같은 페이지에서 할 수 있는지 알고 싶습니다.여러 양식 및 하나의 가공 페이지

좋아요 .. 내가 동작 페이지에서 양식 A를 제출하는 경우 양식 B의 변수에 대해 정의되지 않은 색인이 없으며 제출되지 않았으며 GET을 사용하여 당연히 권장하지 않습니다.

시간과 인내심에 감사드립니다.

답변

7

이 작업을 수행하는 것이 전례가 아닙니다. 아주 종종 다른 매개 변수가 /submit.php?action=register 또는 /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의 변수에 대한 색인, 그리고 당연히 사용이있을 수 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"); 
} 
관련 문제