리스트에서 체크박스로 체크된 게시물만 수정하기

리스트에서 체크박스로 체크된 게시물만 수정하기

QA

리스트에서 체크박스로 체크된 게시물만 수정하기

본문

게시판 리스트에서 체크박스를 통해 체크된 항목에 관련된 게시물 내용을 수정을 하고자 많은 분들의 도움을 받아 아래와 같이 코드를 만들었습니다.

 

문제는 게시판리스트에 있는 체크박스 전체선택을 한 후 수정을 해야만 게시물이 수정이 되고 있습니다.

즉, A라는 게시물과 B라는 게시물의 wr_14, wr_16 셀렉트값을 선택하고 '선택수정'을 눌렀을 경우 값이 저장되지 않습니다. 대신 전체 체크박스 체크를 해준 뒤에 선택수정을 눌러야만 값이 변경됩니다.

 

체크된 게시물만 선택수정을 하기 위해선 어떤 부분을 고쳐야 할까요?

 

- 리스트 페이지의 해당부분 소스입니다.


    <td class="wth">
    <select id="wr_14[<?echo $i?>]" name="wr_14[<?echo $i?>]"> 
        <option value="미납" <? if ($list[$i]['wr_14']=="미납") echo 'selected'; ?>>미납</option>                <option value="납부" <? if ($list[$i]['wr_14']=="납부") echo 'selected'; ?>>납부</option>       
    </select> 
    </td>
    <td class="etc">
    <select id="wr_16[<?echo $i?>]" name="wr_16[<?echo $i?>]" style="background-color:orange;"> 
       <option value="완료" <? if ($list[$i]['wr_16']=="완료") echo 'selected'; ?>>완료</option>        
       <option value="보류" <? if ($list[$i]['wr_16']=="보류") echo 'selected'; ?>>보류</option>    
        <option value="미완료" <? if ($list[$i]['wr_16']=="미완료") echo 'selected'; ?>>미완료</option>
    </select> 
    <?php if ($is_checkbox) { ?>
    <td class="chk">
       <label for="chk_wr_id_<?php echo $i ?>" class="sound_only"><?php echo $list[$i]['subject'] ?></label>
       <input type="checkbox" name="chk_wr_id[]" value="<?php echo $list[$i]['wr_id'] ?>" id="chk_wr_id_<?php echo $i ?>">
    </td>
    <?php } ?>

 

- 위 소스를 처리해 주는 board_list_update.php 소스


<?php
include_once('./_common.php');
$count = count($_POST['chk_wr_id']);
if(!$count) {
    alert($_POST['btn_submit'].' 하실 항목을 하나 이상 선택하세요.');
}
if($_POST['btn_submit'] == '선택삭제') {
    include './delete_all.php';
} else if($_POST['btn_submit'] == '선택복사') {
    $sw = 'copy';
    include './move.php';
} else if($_POST['btn_submit'] == '선택이동') {
    $sw = 'move';
    include './move.php';
} else if($_POST['btn_submit'] == '선택수정') {
    include './list_update.php';
} else {
    alert('올바른 방법으로 이용해 주세요.');
}
?>

 

- 최종 업데이트 소스 list_update.php


<?php 
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가 
 
if(!$is_admin) 
    alert('접근 권한이 없습니다.', G5_URL); 
    for ($i=0; $i<count($_POST['chk_wr_id']); $i++){ 
        $k = $_POST['chk_wr_id'][$i]; 
        $j = $_POST['wr_14'][$i]; 
        $h = $_POST['wr_16'][$i]; 
        $sql = " update $write_table set wr_14='$j', wr_16='$h' where wr_id='$k' "; 
        $result = sql_query($sql); 
    } 
    goto_url('./board.php?bo_table='.$bo_table.'&subject='.$subject.'&page='.$page.$qstr); 
?> 

이 질문에 댓글 쓰기 :

답변 1

눈으로 봐서는 이상이 없어보이는데요?

 

update 실행문과 페이지 이동시키는 부분 주석으로 막아놓고

sql 만 디버깅 해보세요..

선택한 값이 안넘어오는건지 테스트해볼 필요가 있습니다.

 

echo $sql;

//$result = sql_query($sql);

// goto_url('./board.php?bo_table='.$bo_table.'&subject='.$subject.'&page='.$page.$qstr);  

 

 

 

 

혹은 아래와같이 변수로 담지말고 직접 쿼리문에 넣어보세요.

 

   

   
          $sql = " update $write_table set wr_14='$_POST[wr_14][$i]', wr_16='$_POST[wr_16][$i]' where wr_id='$_POST[chk_wr_id][$i]' "; 
답변을 작성하시기 전에 로그인 해주세요.
전체 5
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT