양식에 두 개의 제출 단추가 있습니다. 어느 것이 서버 측에 충돌했는지 어떻게 알 수 있습니까?
답변
각각 이름을 지정하면 클릭 한 이름이 다른 입력으로 전송됩니다.
<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을 확인하십시오.
답변
formaction
HTML 속성 (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>