게시글 수정 시 체크박스 해제문제

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
게시글 수정 시 체크박스 해제문제

QA

게시글 수정 시 체크박스 해제문제

답변 5

본문

 

 안녕하세요, 항상 많은 도움 받고 있습니다..

여분필드로 만든 체크박스가, 게시글 수정을 하면 해제가 되어 다시 일일이 선택해야 하는 문제인데요..!

https://sir.kr/qa/492866

 위의 게시글 참고하여 수정 하였는데, 분명 어제는 성공적으로 체크박스가 되었습니다.. 근데 오늘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']);

 


<li><input type="checkbox" name="wr7[]" value="카페" <?php echo $wrchk[0];?>> 카페</li>    
        <li><input type="checkbox" name="wr7[]" value="음식점" <?php echo $wrchk[1];?>> 음식점</li>    
        <li><input type="checkbox" name="wr7[]" value="기타02" <?php echo $wrchk[2];?>> 기타</li>    

이렇게 수정해보세요


<li><input type="checkbox" name="wr7[]" value="카페" <?php if(in_array('카페',$wr7)) echo 'checked'; ?>> 카페</li>    
        <li><input type="checkbox" name="wr7[]" value="음식점" <?php if(in_array('음식점',$wr7)) echo 'checked'; ?>> 음식점</li>    
        <li><input type="checkbox" name="wr7[]" value="기타02" <?php if(in_array('기타02',$wr7)) echo 'checked'; ?>> 기타</li>    

이렇게 수정해보세요

위에분 말씀 처럼 구분자도 넣으시고

변수도 $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 타입으로 설정되어 있는지 확인하세요.

  - 각 컬럼에 데이터를 '|'로 구분된 문자열 형태로 저장하는 구조가 되어야 합니다

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 0
© SIRSOFT
현재 페이지 제일 처음으로