게시글 수정 시 체크박스 해제문제
본문
안녕하세요, 항상 많은 도움 받고 있습니다..
여분필드로 만든 체크박스가, 게시글 수정을 하면 해제가 되어 다시 일일이 선택해야 하는 문제인데요..!
위의 게시글 참고하여 수정 하였는데, 분명 어제는 성공적으로 체크박스가 되었습니다.. 근데 오늘test 하니 다시 또 안돼서 ㅠㅠ 제가 뭘 잘못건드렸나 싶어서 여러가지 시도 해 보았는데 안되네요..
일단 write.skin.php
// 체크박스
$wr9 = explode('', $write['wr_9']);
for($i=0; $i<12; $i++) $wrchk[$i] = $wr9[$i] ? 'checked' : '';
$wr8 = explode('', $write['wr_8']);
for($i=0; $i<8; $i++) $wrchk[$i] = $wr8[$i] ? 'checked' : '';
$wr5 = explode('', $write['wr_5']);
for($i=0; $i<5; $i++) $wrchk[$i] = $wr5[$i] ? 'checked' : '';
$wr7 = explode('', $write['wr_7']);
for($i=0; $i<3; $i++) $wrchk[$i] = $wr7[$i] ? 'checked' : '';
//본문글
/*종류*/
<li><input type="checkbox" name="wr9[0]" value="한국정보통신(KICC)" <?php echo $wrchk[0];?>> 한국정보통신(KICC)</li>
<li><input type="checkbox" name="wr9[1]" value="나이스정보통신(NICE)" <?php echo $wrchk[1];?>> 나이스정보통신(NICE)</li>
<li><input type="checkbox" name="wr9[2]" value="케이에스넷(KSNET)" <?php echo $wrchk[2];?>> 케이에스넷(KSNET</li>
<li><input type="checkbox" name="wr9[3]" value="코밴(KOVAN)" <?php echo $wrchk[3];?>> 코밴(KOVAN)</li>
<li><input type="checkbox" name="wr9[4]" value="금융결제원(금결원)" <?php echo $wrchk[4];?>> 금융결제원(금결원)</li>
<li><input type="checkbox" name="wr9[5]" value="한국신용카드결제(KOCES)" <?php echo $wrchk[5];?>> 한국신용카드결제(KOCES)</li>
<li><input type="checkbox" name="wr9[6]" value="스마트로(SMATRO)" <?php echo $wrchk[6];?>> 스마트로(SMATRO)</li>
<li><input type="checkbox" name="wr9[7]" value="한국결제네트웍스(KPN)" <?php echo $wrchk[7];?>> 한국결제네트웍스(KPN)</li>
<li><input type="checkbox" name="wr9[8]" value="다우데이타(다우)" <?php echo $wrchk[8];?>> 다우데이타(다우)</li>
<li><input type="checkbox" name="wr9[9]" value="섹터나인(SPC)" <?php echo $wrchk[9];?>> 섹터나인(SPC)</li>
<li><input type="checkbox" name="wr9[10]" value="나이스페이먼츠(나이스페이먼츠)" <?php echo $wrchk[10];?>> 나이스페이먼츠(나이스페이먼츠)</li>
<li><input type="checkbox" name="wr9[11]" value="한국사이버결제(KCP)" <?php echo $wrchk[11];?>> 한국사이버결제(KCP)</li>
/*지역*/
<li><input type="checkbox" name="wr8[0]" value="서울" <?php echo $wrchk[0];?>> 서울</li>
<li><input type="checkbox" name="wr8[1]" value="인천" <?php echo $wrchk[1];?>> 인천</li>
<li><input type="checkbox" name="wr8[2]" value="경기권" <?php echo $wrchk[2];?>> 경기권</li>
<li><input type="checkbox" name="wr8[3]" value="충청도" <?php echo $wrchk[3];?>> 충청도</li>
<li><input type="checkbox" name="wr8[4]" value="전라도" <?php echo $wrchk[4];?>> 전라도</li>
<li><input type="checkbox" name="wr8[5]" value="경상도" <?php echo $wrchk[5];?>> 경상도</li>
<li><input type="checkbox" name="wr8[6]" value="제주도" <?php echo $wrchk[6];?>> 제주도</li>
<li><input type="checkbox" name="wr8[7]" value="강원도" <?php echo $wrchk[7];?>> 강원도</li>
/*장비*/
<li><input type="checkbox" name="wr5[0]" value="유선카드기" <?php echo $wrchk[0];?>> 유선카드기</li>
<li><input type="checkbox" name="wr5[1]" value="포스" <?php echo $wrchk[1];?>> 포스</li>
<li><input type="checkbox" name="wr5[2]" value="키오스크" <?php echo $wrchk[2];?>> 키오스크</li>
<li><input type="checkbox" name="wr5[3]" value="테이블오더" <?php echo $wrchk[3];?>> 테이블오더</li>
<li><input type="checkbox" name="wr5[4]" value="기타01" <?php echo $wrchk[4];?>> 기타</li>
/*업종*/
<li><input type="checkbox" name="wr7[0]" value="카페" <?php echo $wrchk[0];?>> 카페</li>
<li><input type="checkbox" name="wr7[1]" value="음식점" <?php echo $wrchk[1];?>> 음식점</li>
<li><input type="checkbox" name="wr7[2]" value="기타02" <?php echo $wrchk[2];?>> 기타</li>
write_update.head.skin.php
<?php
$wr_9=$wr9[0].''.$wr9[1].''.$wr9[2].''.$wr9[3].''.$wr9[4].''.$wr9[5].''.$wr9[6].''.$wr9[7].''.$wr9[8].''.$wr9[9].''.$wr9[10].''.$wr9[11].''.$wr9[12];
$wr_8=$wr8[0].''.$wr8[1].''.$wr8[2].''.$wr8[3].''.$wr8[4].''.$wr8[5].''.$wr8[6].''.$wr8[7];
$wr_5=$wr5[0].''.$wr5[1].''.$wr5[2].''.$wr5[3].''.$wr5[4];
$wr_7=$wr7[0].''.$wr7[1].''.$wr7[2];
?>
분명 어제는 됐던 것 같은데!! 고수님들 답변 부탁드립니다.. ㅠㅠ 감사합니다!
!-->!-->답변 5
구분자를 넣어주세요.
아래 예시 참조해서 전부 수정하세요.
$wr_7=$wr7[0].'|'.$wr7[1].'|'.$wr7[2];
$wr7 = explode('|', $write['wr_7']);
!-->!-->
위에분 말씀 처럼 구분자도 넣으시고
변수도 $wrchk[$i] 에 다 넣으시는게 아니라 각각 다 다른 변수에 넣어보세요.
<?php
// write_update.head.skin.php
$wr_9 = implode('', $wr9);
$wr_8 = implode('', $wr8);
$wr_5 = implode('', $wr5);
$wr_7 = implode('', $wr7);
//write.skin.php
// 체크박스 체크 상태 배열 초기화
$wrchk9 = [];
$wrchk8 = [];
$wrchk5 = [];
$wrchk7 = [];
// 체크박스 wr_9
$wr9 = str_split($write['wr_9']);
for ($i = 0; $i < count($wr9); $i++) {
$wrchk9[$i] = isset($wr9[$i]) && $wr9[$i] ? 'checked' : '';
}
// 체크박스 wr_8
$wr8 = str_split($write['wr_8']);
for ($i = 0; $i < count($wr8); $i++) {
$wrchk8[$i] = isset($wr8[$i]) && $wr8[$i] ? 'checked' : '';
}
// 체크박스 wr_5
$wr5 = str_split($write['wr_5']);
for ($i = 0; $i < count($wr5); $i++) {
$wrchk5[$i] = isset($wr5[$i]) && $wr5[$i] ? 'checked' : '';
}
// 체크박스 wr_7
$wr7 = str_split($write['wr_7']);
for ($i = 0; $i < count($wr7); $i++) {
$wrchk7[$i] = isset($wr7[$i]) && $wr7[$i] ? 'checked' : '';
}
?>
// 예제
<!-- wr_9 체크박스 예제 -->
<li><input type="checkbox" name="wr9[0]" value="한국정보통신(KICC)" <?php echo $wrchk9[0];?>> 한국정보통신(KICC)</li>
<li><input type="checkbox" name="wr9[1]" value="나이스정보통신(NICE)" <?php echo $wrchk9[1];?>> 나이스정보통신(NICE)</li>
<!-- wr_8 체크박스 예제 -->
<li><input type="checkbox" name="wr8[0]" value="서울" <?php echo $wrchk8[0];?>> 서울</li>
.
.
.
.
<?php
$wr9 = explode('|', $write['wr_9']);
$wr9s = ['한국정보통신(KICC)', '나이스정보통신(NICE)', '케이에스넷(KSNET)']; // 나머지 생략
foreach($wr9s as $key => $value) {
$checked = in_array($value, $wr9) ? ' checked' : '';
echo '<li><input type="checkbox" name="wr9[]" id="wr9-'.$key.'" value="'.$value.'"'.$checked.'><label for="wr9-'.$key.'">'.$value.'</label></li>';
}
$wr8 = explode('|', $write['wr_8']);
$wr8s = ['서울', '인천', '경기권']; // 여기도 나머지 생략
foreach($wr8s as $key => $value) {
$checked = in_array($value, $wr8) ? ' checked' : '';
echo '<li><input type="checkbox" name="wr8[]" id="wr8-'.$key.'" value="'.$value.'"'.$checked.'><label for="wr8-'.$key.'">'.$value.'</label></li>';
}
// 나머지 5, 7은 생략
write.skin.php
<?php
$wr_5 = implode('|', $_POST['wr5']);
$wr_7 = implode('|', $_POST['wr7']);
$wr_8 = implode('|', $_POST['wr8']);
$wr_9 = implode('|', $_POST['wr9']);
$wr9s = ['한국정보통신(KICC)', '나이스정보통신(NICE)', '케이에스넷(KSNET)']; // 나머지 생략
다른(5, 7, 8) 것들도 9처럼 저런 식으로 배열에 넣으시면 돼요.
!-->!-->※ write.skin.php와 write_update.head.skin.php에 처리하는 코드가 포함되어 있으나.
> 체크박스 값이 저장되거나 불려오지 못하는 것으로 보입니다.
write.skin.php
<?php
$wr9 = isset($write['wr_9']) ? explode('|', $write['wr_9']) : [];
$wr8 = isset($write['wr_8']) ? explode('|', $write['wr_8']) : [];
$wr5 = isset($write['wr_5']) ? explode('|', $write['wr_5']) : [];
$wr7 = isset($write['wr_7']) ? explode('|', $write['wr_7']) : [];
$wrchk9 = array_fill(0, 12, '');
$wrchk8 = array_fill(0, 8, '');
$wrchk5 = array_fill(0, 5, '');
$wrchk7 = array_fill(0, 3, '');
foreach ($wr9 as $index => $value) $wrchk9[$index] = 'checked';
foreach ($wr8 as $index => $value) $wrchk8[$index] = 'checked';
foreach ($wr5 as $index => $value) $wrchk5[$index] = 'checked';
foreach ($wr7 as $index => $value) $wrchk7[$index] = 'checked';
?>
<li><input type="checkbox" name="wr9[0]" value="한국정보통신(KICC)" <?= $wrchk9[0]; ?>> 한국정보통신(KICC)</li>
<li><input type="checkbox" name="wr8[0]" value="서울" <?= $wrchk8[0]; ?>> 서울</li>
write_update.head.skin.php
<?php
$wr_9 = isset($_POST['wr9']) ? implode('|', $_POST['wr9']) : '';
$wr_8 = isset($_POST['wr8']) ? implode('|', $_POST['wr8']) : '';
$wr_5 = isset($_POST['wr5']) ? implode('|', $_POST['wr5']) : '';
$wr_7 = isset($_POST['wr7']) ? implode('|', $_POST['wr7']) : '';
$sql = "UPDATE your_table_name SET
wr_9 = '{$wr_9}',
wr_8 = '{$wr_8}',
wr_5 = '{$wr_5}',
wr_7 = '{$wr_7}'
WHERE id = '{$id}'";
※ 테이블의 컬럼이 TEXT
또는 VARCHAR
타입으로 설정되어 있는지 확인하세요.
- 각 컬럼에 데이터를 '|'로 구분된 문자열 형태로 저장하는 구조가 되어야 합니다
!-->!-->
답변을 작성하시기 전에 로그인 해주세요.