한 형태의 제출 버튼 2 개 어느 것이 서버 측에 충돌했는지 어떻게

양식에 두 개의 제출 단추가 있습니다. 어느 것이 서버 측에 충돌했는지 어떻게 알 수 있습니까?



답변

각각 이름을 지정하면 클릭 한 이름이 다른 입력으로 전송됩니다.

<input type="submit" name="button_1" value="Click me">

답변

해결 방법 1 :
각 입력에 다른 값을 지정하고 같은 이름을 유지 :

<input type="submit" name="action" value="Update" />
<input type="submit" name="action" value="Delete" />

그런 다음 코드에서 어떤 항목이 트리거되었는지 확인하십시오.

if ($_POST['action'] == 'Update') {
    //action for update here
} else if ($_POST['action'] == 'Delete') {
    //action for delete
} else {
    //invalid action!
}

문제는 입력 내에서 사용자가 볼 수있는 텍스트에 논리를 연결한다는 것입니다.


해결 방법 2 :
각각에 고유 한 이름을 지정하고 해당 입력이 있는지 $ _POST를 확인하십시오.

<input type="submit" name="update_button" value="Update" />
<input type="submit" name="delete_button" value="Delete" />

그리고 코드에서 :

if (isset($_POST['update_button'])) {
    //update action
} else if (isset($_POST['delete_button'])) {
    //delete action
} else {
    //no button pressed
}

답변

더 나은 솔루션은 버튼 태그를 사용하여 양식을 제출하는 것으로 구성됩니다.

<form>
    ...
    <button type="submit" name="action" value="update">Update</button>
    <button type="submit" name="action" value="delete">Delete</button>
</form>

버튼 내부 의 HTML (예 : ..>Update<..사용자가 보는 것; HTML이 제공되므로 value사용자가 볼 수 없으며 서버로만 전송 됨) 이러한 방식으로 국제화 및 다중 표시 언어에 불편 함이 없습니다. 이전 솔루션의 경우 버튼의 레이블은 서버로 전송 된 값입니다.


답변

이에 대한 새로운 HTML5 접근 방식이 있습니다 formaction.

<button type="submit" formaction="/action_one">First action</button>
<button type="submit" formaction="/action_two">Second action</button>

분명히 이것은 IE9 및 이전 버전에서는 작동하지 않지만 다른 브라우저의 경우 괜찮을 것입니다 ( w3schools.com HTML <button> formaction 속성 참조 ).

개인적으로 저는 일반적으로이 접근 방식을 백업으로 사용하여 Javascript를 사용하여 (빠른 인식 피드백을 위해) 원격으로 양식을 제출합니다. 둘 사이에서 다루지 않은 유일한 사람들은 Javascript가 비활성화 된 IE <9입니다.

물론, 어떤 버튼을 눌렀는지에 관계없이 기본적으로 동일한 작업을 서버 측에서 수행하는 경우 부적절 할 수 있지만 종종 사용 가능한 두 개의 사용자 측 작업이있는 경우 두 개의 서버 측 작업에도 매핑됩니다.

편집 :
주석에서 Pascal_dher가 지적한 것처럼이 속성은 <input>태그 에서도 사용할 수 있습니다.


답변

이것은 테스트하기 매우 쉽습니다

<form action="" method="get">

<input type="submit" name="sb" value="One">
<input type="submit" name="sb" value="Two">
<input type="submit" name="sb" value="Three">

</form>

HTML 페이지에 넣고 버튼을 클릭하고 URL을 확인하십시오.


답변

formactionHTML 속성 (5 번째 줄)을 사용하십시오 .

<form action="/action_page.php" method="get">
    First name: <input type="text" name="fname"><br>
    Last name: <input type="text" name="lname"><br>
    <button type="submit">Submit</button><br>
    <button type="submit" formaction="/action_page2.php">Submit to another page</button>
</form>

답변

<form>
    <input type="submit" value="Submit to a" formaction="/submit/a">
    <input type="submit" value="submit to b" formaction="/submit/b">
</form>