폼 관련 질문 드립니다.
본문
안녕하세요 제가 폼을 하나 만들어 보려고 하는데 이건 어떻게 만들어야 할지 막막해서요
다른 건 뭐 다 할 수 있을 것 같은데요 활동계획이라는 부분은 언떻게 처리를 해야 할지 막막 하네요
언떤식으로 하면 될런지 혹시 전문가분의 조언 부탁 드립니다. 필드는 현제 wr_11 ~ wr_30까지는 DB에도 만들어 놓기는 했습니다.
월화수목금토일 중에 월요일 선택을 하면 0시 ~ 2시 뭐 이런식으로 해서 쭈욱 나오게 하고 거기서 시간 선택을 하게 하면 될런지 모르겠네요
편안한 방법이 있으면 말씀 해주시면 정말 감사 드리겠습니다.
제가 아직 PHP를 잘 못하다 보니 어려움이 좀 있기는 하네요
답변 2
아래의 코드를 참고해 보시겠어요..
1. HTML
<?php
include_once('./_common.php');
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>활동지원인력 신청서</title>
</head>
<body>
<h1>활동지원인력 신청서</h1>
<form action="form_submit.php" method="post">
<div>
<label for="wr_1">성명</label>
<input type="text" id="wr_1" name="wr_1" required>
</div>
<div>
<label for="wr_2">성별</label>
<input type="radio" id="wr_2_male" name="wr_2" value="남" required> 남
<input type="radio" id="wr_2_female" name="wr_2" value="여"> 여
</div>
<div>
<label for="wr_3">생년월일</label>
<input type="date" id="wr_3" name="wr_3" required>
</div>
<div>
<label for="wr_4">휴대 전화</label>
<input type="text" id="wr_4" name="wr_4" required>
</div>
<div>
<label for="wr_5">집 전화</label>
<input type="text" id="wr_5" name="wr_5">
</div>
<div>
<label for="wr_6">주소</label>
<input type="text" id="wr_6" name="wr_6" required>
</div>
<div>
<label for="wr_7">결혼여부</label>
<input type="radio" id="wr_7_single" name="wr_7" value="미혼" required> 미혼
<input type="radio" id="wr_7_married" name="wr_7" value="기혼"> 기혼
<input type="radio" id="wr_7_other" name="wr_7" value="기타"> 기타
</div>
<div>
<label for="wr_8">차량운전</label>
<input type="radio" id="wr_8_possible" name="wr_8" value="가능" required> 가능
<input type="radio" id="wr_8_impossible" name="wr_8" value="불가능"> 불가능
</div>
<div>
<label for="wr_9">차량보유</label>
<input type="radio" id="wr_9_yes" name="wr_9" value="유" required> 유
<input type="radio" id="wr_9_no" name="wr_9" value="무"> 무
</div>
<div>
<label for="wr_10">장애유형</label>
<input type="text" id="wr_10" name="wr_10">
</div>
<div>
<label for="wr_11">장애정도</label>
<input type="radio" id="wr_11_yes" name="wr_11" value="유" required> 유
<input type="radio" id="wr_11_no" name="wr_11" value="무"> 무
</div>
<div>
<label for="wr_12">주된 진료 과목</label>
<input type="text" id="wr_12" name="wr_12">
</div>
<div>
<label for="wr_13">필요자격증</label>
<input type="text" id="wr_13" name="wr_13">
</div>
<div>
<label for="wr_14">제공 가능한 서비스</label>
<input type="checkbox" id="wr_14" name="wr_14[]" value="신체보조-세면, 목욕 등"> 신체보조-세면, 목욕 등
<input type="checkbox" id="wr_14" name="wr_14[]" value="마사지를 포함한 청소, 세탁 등"> 마사지를 포함한 청소, 세탁 등
<input type="checkbox" id="wr_14" name="wr_14[]" value="산책 및 외출 동행"> 산책 및 외출 동행
</div>
<div>
<label for="wr_15">활동 계획</label>
<table border="1">
<thead>
<tr>
<th>시간</th>
<th>월</th>
<th>화</th>
<th>수</th>
<th>목</th>
<th>금</th>
<th>토</th>
<th>일</th>
</tr>
</thead>
<tbody>
<?php
$times = array("0-2", "2-4", "4-6", "6-8", "8-10", "10-12", "12-14", "14-16", "16-18", "18-20", "20-22", "22-24");
foreach ($times as $time) {
echo "<tr>";
echo "<td>{$time}</td>";
foreach (array("월", "화", "수", "목", "금", "토", "일") as $day) {
echo "<td><input type='checkbox' name='wr_activity[{$day}][]' value='{$time}'></td>";
}
echo "</tr>";
}
?>
</tbody>
</table>
</div>
<div>
<label for="wr_16">신청일</label>
<input type="date" id="wr_16" name="wr_16" required>
</div>
<div>
<label for="wr_17">서명</label>
<input type="text" id="wr_17" name="wr_17" required>
</div>
<input type="submit" value="제출">
</form>
</body>
</html>
2. PHP
<?php
include_once('./_common.php');
// CSRF 방지 토큰 확인 (그누보드의 기본 기능 사용)
if (!check_write_token()) {
alert('유효하지 않은 요청입니다.');
exit;
}
// 데이터베이스에 입력할 준비
$wr_1 = trim($_POST['wr_1']); // 성명
$wr_2 = trim($_POST['wr_2']); // 성별
$wr_3 = trim($_POST['wr_3']); // 생년월일
$wr_4 = trim($_POST['wr_4']); // 휴대전화
$wr_5 = trim($_POST['wr_5']); // 집전화
$wr_6 = trim($_POST['wr_6']); // 주소
$wr_7 = trim($_POST['wr_7']); // 결혼여부
$wr_8 = trim($_POST['wr_8']); // 차량운전
$wr_9 = trim($_POST['wr_9']); // 차량보유
$wr_10 = trim($_POST['wr_10']); // 장애유형
$wr_11 = trim($_POST['wr_11']); // 장애정도
$wr_12 = trim($_POST['wr_12']); // 주된 진료 과목
$wr_13 = trim($_POST['wr_13']); // 필요자격증
$wr_14 = isset($_POST['wr_14']) ? implode(',', $_POST['wr_14']) : ''; // 제공 가능한 서비스
$wr_16 = trim($_POST['wr_16']); // 신청일
$wr_17 = trim($_POST['wr_17']); // 서명
// 활동 계획 데이터 처리
$wr_activity = array();
$days = array("월", "화", "수", "목", "금", "토", "일");
foreach ($days as $day) {
if (isset($_POST["wr_activity"][$day])) {
$wr_activity[$day] = implode(',', $_POST["wr_activity"][$day]);
} else {
$wr_activity[$day] = '';
}
}
// 유효성 검사
if (empty($wr_1) || empty($wr_3) || empty($wr_4) || empty($wr_6) || empty($wr_16) || empty($wr_17)) {
alert('필수 항목이 누락되었습니다.');
exit;
}
// 데이터베이스에 저장
$sql = "INSERT INTO g5_activity_support (
wr_1, wr_2, wr_3, wr_4, wr_5, wr_6, wr_7,
wr_8, wr_9, wr_10, wr_11, wr_12, wr_13, wr_14, wr_16, wr_17,
wr_activity_mon, wr_activity_tue, wr_activity_wed,
wr_activity_thu, wr_activity_fri, wr_activity_sat, wr_activity_sun)
VALUES (
'{$wr_1}', '{$wr_2}', '{$wr_3}', '{$wr_4}', '{$wr_5}', '{$wr_6}', '{$wr_7}',
'{$wr_8}', '{$wr_9}', '{$wr_10}', '{$wr_11}', '{$wr_12}', '{$wr_13}', '{$wr_14}',
'{$wr_16}', '{$wr_17}', '{$wr_activity['월']}', '{$wr_activity['화']}',
'{$wr_activity['수']}', '{$wr_activity['목']}', '{$wr_activity['금']}',
'{$wr_activity['토']}', '{$wr_activity['일']}')";
if (sql_query($sql)) {
alert('신청서가 성공적으로 제출되었습니다.', G5_URL);
} else {
alert('신청서 제출 중 오류가 발생했습니다. 다시 시도해주세요.');
}
include_once(G5_PATH.'/tail.php');
?>
정답은 없습니다만, 만약 제가 작업한다면 아래와 같이 작업할 것 같습니다.
사람인 등의 구직 사이트 이용해보신적 있으시죠?
이력서 작성할때 최종 학력이나 경력 입력하는 방식과 동일하게 작업하면
- 한 줄로 입력 후 +/- 버튼으로 다음 줄 추가/삭제
가시성과 사용성을 모두 챙길 수 있습니다.
도움이 되셨다면 채택 한번 부탁드립니다^^