PHP
[PHP] 구구단
98kg
2024. 2. 22. 20:04
action="<?php echo $_SERVER['PHP_SELF']; ?>
HTML 폼(form)의 작업(action)을 현재 PHP 파일에 있는 서버의 자기 자신(PHP_SELF)으로 설정하는 것을 의미합니다. 이 작업은 폼이 제출(submit)될 때, 데이터를 처리하고 결과를 보여줄 PHP 스크립트를 현재 파일로 설정하여 해당 파일 내에서 데이터를 처리할 수 있도록 합니다.
<코드>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>폼 입력을 통한 구구단 출력</title>
</head>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" name="form1" >
<label for="dan">출력하고자 하는 단을 입력하세요.</label><br>
<input type="text" name="dan" id="dan" autocomplete="off">
<button id="submit_btn">구구단 출력</button>
</form>
<?php
if(isset($_POST['dan']) && $_POST['dan'] != ''){
if(is_numeric($_POST['dan'])){
for($i = 1; $i <= 9; $i++){
echo $_POST['dan'].'x'.$i.'='.$_POST['dan'] * $i.'<br>';
}
}
}
?>
<script>
const submit_btn = document.querySelector('#submit_btn');
submit_btn.addEventListener('click', (e) =>{
const dan = document.querySelector('#dan');
if(dan.value === ''){
e.preventDefault(); // 폼 전송을 막음
alert('입력란을 비우지마세여.');
dan.focus();
return false;
}
if(isNaN(dan.value)){
alert('숫자를 입력해주세요');
dan.focus();
return false;
}
document.form1.submit();
});
</script>
</body>
</html>
<script>
const submit_btn = document.querySelector('#submit_btn');
submit_btn.addEventListener('click', (e) =>{
const dan = document.querySelector('#dan');
if(dan.value === ''){
e.preventDefault(); // 폼 전송을 막음
alert('입력란을 비우지마세여.');
dan.focus();
return false;
}
if(isNaN(dan.value)){
alert('숫자를 입력해주세요');
dan.focus();
return false;
}
document.form1.submit();
});
</script>
이 부분에 대한 설명입니다.
- const submit_btn = document.querySelector('#submit_btn');: HTML 문서에서 id가 "submit_btn"인 요소를 찾아 submit_btn 변수에 할당합니다.
- submit_btn.addEventListener('click', (e) => { ... });: submit_btn 요소에 클릭(click) 이벤트를 추가하고, 클릭 이벤트가 발생했을 때 실행할 함수를 정의합니다. 이 함수는 인자로 이벤트 객체 e를 받습니다.
- 이벤트 함수 내부:
- const dan = document.querySelector('#dan');: HTML 문서에서 id가 "dan"인 요소를 찾아 dan 변수에 할당합니다.
- if(dan.value === '') { ... }: dan 요소의 값이 비어있는지 확인합니다. 비어있으면 다음 동작을 수행합니다:
- e.preventDefault();: 폼의 제출을 막습니다.
- alert('입력란을 비우지마세여.');: 경고창을 띄워 사용자에게 메시지를 표시합니다.
- dan.focus(); : dan 요소로 포커스를 이동시킵니다.
- return false; : 함수 실행을 중단합니다.
- if(isNaN(dan.value)) { ... }: dan 요소의 값이 숫자가 아닌지 확인합니다. 숫자가 아니면 다음 동작을 수행합니다:
- alert('숫자를 입력해주세요');: 경고창을 띄워 사용자에게 메시지를 표시합니다.
- dan.focus();: dan 요소로 포커스를 이동시킵니다.
- return false;: 함수 실행을 중단합니다.
- document.form1.submit();: 위의 두 조건을 모두 통과하면 form1이라는 이름을 가진 폼을 제출합니다. 여기서 "form1"은 폼의 이름입니다.
이 스크립트는 사용자가 숫자를 입력하지 않거나 입력란을 비웠을 때 경고 메시지를 표시하고, 제출을 막거나 폼을 제출합니다.
결과
아무것도 입력하지 않았을 때
숫자 외의 값을 입력했을 때
숫자 5를 입력했을 때