PHP 양식 제출에서 어떤 버튼이 클릭되었는지 어떻게 알 수 있습니까?
내 페이지에 여러 개의 버튼이 있지만 어떤 버튼이 클릭되었는지 어떻게 알 수 있는지 잘 모르겠습니다. 내 두 버튼에 대한 마크 업은 다음과 같습니다.
<input type="submit" id="btnSubmit" value="Save Changes" />
<input type="submit" id="btnDelete" value="Delete" />
다음과 같은 HTML 양식을 사용합니다.
<input type="submit" name="btnSubmit" value="Save Changes" />
<input type="submit" name="btnDelete" value="Delete" />
사용할 PHP 코드는 다음과 같습니다.
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Something posted
if (isset($_POST['btnDelete'])) {
// btnDelete
} else {
// Assume btnSubmit
}
}
HTML 소스 코드 양식에 표시되는 첫 번째 제출 버튼을 항상 가정하거나 기본값으로 설정해야합니다 . 실제로 다양한 브라우저는 다음과 같은 경우 게시 데이터와 함께 제출 버튼의 이름 / 값을 안정적으로 보냅니다.
- 사용자는 말 그대로 마우스 또는 포인팅 장치로 제출 버튼을 클릭합니다.
- 또는 제출 버튼 (탭으로 이동)에 초점이 맞춰진 다음 Enter키를 누릅니다.
양식을 제출하는 다른 방법이 있으며 일부 브라우저 / 버전에서는 이러한 상황 중 일부에서 제출 단추의 이름 / 값을 보내지 않기로 결정 합니다. 예를 들어 많은 사용자Enter 가 커서 / 포커스가 텍스트 필드에있을 때 키 를 눌러 양식을 제출 합니다. 양식은 JavaScript 및 좀 더 모호한 방법을 통해 제출할 수도 있습니다.
이 세부 사항에주의를 기울이는 것이 중요합니다. 그렇지 않으면 사용자가 양식을 제출할 때 실제로 실망 할 수 있지만 "아무 일도 일어나지 않고"데이터가 손실됩니다. 코드가 양식 제출을 감지하지 못했기 때문입니다. 사실을 예상하지 못했기 때문입니다. 제출 버튼의 이름 / 값은 게시 데이터와 함께 전송되지 않을 수 있습니다.
또한 항상 기본 제출 버튼을 가정 해야하므로 단일 제출 버튼이있는 양식에도 위의 조언을 사용해야 합니다 .
나는 인터넷이 수많은 양식 처리기 튜토리얼로 가득 차 있다는 것을 알고 있으며, 거의 모든 것들이 제출 버튼의 이름과 값을 확인하는 것 외에는 아무것도하지 않습니다. 그러나 그들은 단지 명백한 잘못입니다!
HTML에서 :
<input type="submit" id="btnSubmit" name="btnSubmit" value="Save Changes" />
<input type="submit" id="btnDelete" name="btnDelete" value="Delete" />
PHP에서 :
if (isset($_POST["btnSubmit"])){
// "Save Changes" clicked
} else if (isset($_POST["btnDelete"])){
// "Delete" clicked
}
각 버튼에 이름 속성을 부여하는 데 필요한 모든 것입니다. 그리고 PHP 스크립트에서 각 버튼 누름을 처리해야합니다. 그러나 각 버튼에 고유 한 이름을 지정해야합니다. PHP 스크립트는 대부분의 경우 이름 만 처리하기 때문에
<input type="submit" name="Submit_this" id="This" />
PHP 또는 자바 스크립트로 요청하고 있습니까?
PHP에있는 경우 이름을 지정하고 post 또는 get 메소드를 사용합니다. 그 후에 isset 옵션을 사용하거나 해당 값으로 특정 버튼 이름을 확인할 수 있습니다.
js에 있으면 getElementById를 사용하십시오.
'Programing' 카테고리의 다른 글
mysql 기간 및 가져 오기 시간 (0) | 2020.10.24 |
---|---|
컬 포스트 데이터 및 헤더 만 (0) | 2020.10.24 |
foreach 루프에서 null 확인 (0) | 2020.10.23 |
jQuery-아래로 스크롤 할 때 축소되는 고정 헤더 (0) | 2020.10.23 |
최신 appcompat 및 지원 라이브러리로 업데이트 한 후 DexIndexOverflowException 문제 (0) | 2020.10.23 |