폼 관련 질문 드립니다.
본문
안녕하세요 현제 https://sgcil.org/bbs/board.php?bo_table=03_03
여기서 활동지원 신청에 관련된 폼을 만들고 있는데요
월요일부터 일요일 까지 각각의 시간을 선택을 할 수 있도록 하였는데요
문제는 이게 작성페이지 뷰페이지 모두다 내가 체크한 부분이 정상적으로 체크되어서 잘 출력이 됩니다.
하지만 수정을 누르면 이상하게 체크된 부분이 나오지 않아서요
혹시 이거 알려 주시면 정말 감사 드리겠습니다. 이것만 하면 사실 끝나는 상태라서요 나머지는 제가 다 하였습니다. 그리고 어떤 분이 만들어 주시기는 했는데 이게 적용을 하니 되지 않아서요 그래서 쳇지피티를 좀 활용을 하기는 했습니다. 수정에 관련 된 것을 물어보니 이상한 소리만 하고 그래서요 ㅠㅠㅠㅠㅠ
아시는분은 알려 주시면 감사 드리겠습니다.
write_update.skin.php
$days = array("월", "화", "수", "목", "금", "토", "일");
$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");
// wr_17을 문자열로 변환
$wr_17 = '';
$total_hours = 0;
foreach ($days as $day) {
foreach ($times as $time) {
$key = "wr_17_{$day}_{$time}";
if (isset($_POST[$key]) && $_POST[$key] == '1') {
$wr_17 .= "$day-$time|";
$total_hours += 2; // 각 시간 블록이 2시간이므로 총합에 2를 더합니다.
}
}
}
// 마지막 '|' 제거
$wr_17 = rtrim($wr_17, '|');
// SQL 업데이트
sql_query("UPDATE $write_table SET wr_17 = '$wr_17' WHERE wr_id = '$wr_id'");
write.skin.php
<?php
// 활동 계획 데이터 처리
$days = array("월", "화", "수", "목", "금", "토", "일");
$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 ($days as $day) {
$key = "wr_16_{$day}_{$time}";
$checked = (isset($_POST[$key]) && $_POST[$key] == '1') ? 'checked' : '';
echo "<td><input type='checkbox' name='{$key}' value='1' {$checked} id='{$key}'><label for='{$key}'></label></td>";
}
echo "</tr>";
}
?>
view.skin.php
<?php
// DB에서 wr_11 데이터 가져오기
$wr_16 = isset($write['wr_16']) ? $write['wr_16'] : ''; // 예시 데이터 초기화
$wr_16_array = explode('|', $wr_16);
$days = array("월", "화", "수", "목", "금", "토", "일");
$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");
?>
<tr>
<th scope="row" class="subject" rowspan="15"><font color="#0c4ca3">*</font><label for="wr_17">활동계획</label></th>
<td class="subtext" colspan="8" style="text-align:center;">※ 대략적으로, 활동 가능한 시간대에 채크표시해주시기 바랍니다.</td>
</tr>
<tr>
<td class="subtext" style="text-align:center;">시간</td>
<td class="subtext" style="text-align:center;">월</td>
<td class="subtext" style="text-align:center;">화</td>
<td class="subtext" style="text-align:center;">수</td>
<td class="subtext" style="text-align:center;">목</td>
<td class="subtext" style="text-align:center;">금</td>
<td class="subtext" style="text-align:center;">토</td>
<td class="subtext" style="text-align:center;">일</td>
</tr>
<?php
foreach ($times as $time) {
echo "<tr>";
echo "<td>{$time}</td>";
foreach ($days as $day) {
$key = "$day-$time";
$checked = in_array($key, $wr_16_array) ? 'checked' : '';
echo "<td><input type='checkbox' disabled {$checked} id='{$key}'><label for='{$key}'></label></td>";
}
echo "</tr>";
}
?>
답변 2
write.skin.php에 $_POST로 넘어오는게 맞으실까요?
write페이지면 $write 배열에서 가져오셔야될것같은데요...
//$checked = (isset($_POST[$key]) && $_POST[$key] == '1') ? 'checked' : '';
$checked = (isset($write[$key]) && $write[$key] == '1') ? 'checked' : '';
view.skin.php랑 동일하게 셋팅하시면될것같네요.
!-->
<?php
//최상단추가
$wr_16 = isset($write['wr_16']) ? $write['wr_16'] : ''; // 예시 데이터 초기화
$wr_16_array = explode('|', $wr_16);
...
//foreach부분 수정
foreach ($days as $day) {
$key = "$day-$time";
$checked = in_array($key, $wr_16_array) ? 'checked' : '';
echo "<td><input type='checkbox' name='{$key}' value='1' {$checked} id='{$key}'><label for='{$key}'></label></td>";
}
답변을 작성하시기 전에 로그인 해주세요.