리스트에서 체크박스로 체크된 게시물만 수정하기
본문
게시판 리스트에서 체크박스를 통해 체크된 항목에 관련된 게시물 내용을 수정을 하고자 많은 분들의 도움을 받아 아래와 같이 코드를 만들었습니다.
문제는 게시판리스트에 있는 체크박스 전체선택을 한 후 수정을 해야만 게시물이 수정이 되고 있습니다.
즉, 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]' "; |
답변을 작성하시기 전에 로그인 해주세요.