폼 관련 질문 드립니다. 채택완료

안녕하세요 현제 https://sgcil.org/bbs/board.php?bo_table=03_03
여기서 활동지원 신청에 관련된 폼을 만들고 있는데요 

월요일부터 일요일 까지 각각의 시간을 선택을 할 수 있도록 하였는데요 

문제는 이게 작성페이지 뷰페이지 모두다 내가 체크한 부분이 정상적으로 체크되어서 잘 출력이 됩니다.

하지만 수정을 누르면 이상하게 체크된 부분이 나오지 않아서요

혹시 이거 알려 주시면 정말 감사 드리겠습니다. 이것만 하면 사실 끝나는 상태라서요 나머지는 제가 다 하였습니다. 그리고 어떤 분이 만들어 주시기는 했는데 이게 적용을 하니 되지 않아서요 그래서 쳇지피티를 좀 활용을 하기는 했습니다. 수정에 관련 된 것을 물어보니 이상한 소리만 하고 그래서요 ㅠㅠㅠㅠㅠ

아시는분은 알려 주시면 감사 드리겠습니다.

write_update.skin.php

Copy
$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

Copy
<?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

Copy
<?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개

채택된 답변
+20 포인트

write.skin.php에 $_POST로 넘어오는게 맞으실까요?
write페이지면 $write 배열에서 가져오셔야될것같은데요...

Copy
//$checked = (isset($_POST[$key]) && $_POST[$key] == '1') ? 'checked' : '';

$checked = (isset($write[$key]) && $write[$key] == '1') ? 'checked' : '';
로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

+1

그누보드 기본 변수
리스트 = $list[$i]['필드']
상세보기 = $view['필드']
글쓰기 = $write['필드']
위 처럼 하였는데 안되요 여전히 체크한 부분이 다 초기화가 되어버려서요

댓글을 작성하려면 로그인이 필요합니다.

view.skin.php랑 동일하게 셋팅하시면될것같네요.

Copy
<?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>"; 
    }
로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

아 안되는데 뭐가 문제가 있을까요 ㅠㅜㅠ 혹시 도와주시면 안될까요

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고