리스트에서 여분필드 수정
본문
안녕하세요.
현재 리스트에서 여분필드 수정건 때문에 자꾸 질문 글을 올리게 되네요.
일전의 답글의 ifelse님께서 조언해주신 덕분에 어느정도 원하는 결과물이 나왔는데요 ^^
https://sir.kr/qa/268657?stx=%EC%84%A0%ED%83%9D%EC%88%98%EC%A0%95&sst=wr_num&unanswered=0&s_tag=
위 링크에서 나온대로 list.skin.php 파일에 코드를 넣어주고, bbs/list_update.php 파일을 따로 생성해줘서 아래 코드를 넣어줬는데요.
체크를 하고 수정을 해도 수정이 이상하게 되길래, alert를 찍어서 확인해보니 chk_wr_id 체크값이 자꾸 2씩 증가하고 option값이 이상한걸로 변경되어서 적용되기도 하더군요.
이 현상을 해결할 수 있는 방법이 있을까요?
아래는 코드 내용입니다.
// 보드스킨 list.skin.php
<select id="wr_1[<?echo $i?>]" name="wr_1[<?echo $i?>]">
<option value="개통완료" <? if ($list[$i]['wr_1']=="개통완료") echo 'selected'; ?>>개통완료</option>
<option value="방문예정" <? if ($list[$i]['wr_1']=="방문예정") echo 'selected'; ?>>방문예정</option>
<option value="상담진행" <? if ($list[$i]['wr_1']=="상담진행") echo 'selected'; ?>>상담진행</option>
<option value="상담요청" <? if ($list[$i]['wr_1']=="상담요청") echo 'selected'; ?>>상담요청</option>
</select>
// bbs/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('올바른 방법으로 이용해 주세요.');
}
?>
// bbs/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_1'][$i];
$sql = " update $write_table set wr_1= '$j' where wr_id= '$k' ";
$result = sql_query($sql);
}
alert($sql);
goto_url('./board.php?bo_table='.$bo_table.'&subject='.$subject.'&page='.$page.$qstr);
?>
답변 3
아마도 리스트 파일에서 값을 넘기실때 name=
"wr_1[<?echo $i?>]"
> 의 값과
for 문 안에서의 $i 값이 일치하지 않아서 생기는 것 같습니다.
같은 문제점으로 고민을 하다 뭔가 값이 제대로 넘어오지 않는 것 같아서 이리 저리 확인해 보다 아래와 같이 수정하니 해결이 되었습니다. 공개된 소스에 도움을 받았습니다. 감사합니다.
// 보드스킨 list.skin.php
<?php if ($is_checkbox) { ?>
<td>
<label for="chk_wr_id_<?php echo $i; ?>" class="sound_only"><?php echo $list[$i]['subject']; ?></label>
<label class="checkbox"><?php //echo $list[$i]['wr_id']; ?>
<input type="checkbox" name="chk_wr_id[]" value="<?php echo $list[$i]['wr_id']; ?>" id="chk_wr_id_<?php echo $i; ?>"><i></i>
<input type="hidden" name="wr_id[<?php echo $i; ?>]" id="wr_id[<?php echo $i; ?>]" value="<?php echo $list[$i]['wr_id']; ?>"> <!-- 이 줄 추가 -->
</label>
</td>
// 보드스킨 list.skin.php
<?php if ($is_checkbox) { ?> 이 끝나는
<?php } ?>
를 아래와 같이 수정합니다.
<?php $list_count = $i; } ?>
<input type="hidden" name="list_count" id="list_count" value="<?php echo $list_count ?>">
// bbs/list_update.php 를 아래와 같이 수정합니다.
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
if(!$is_admin)
alert('접근 권한이 없습니다.', G5_URL);
$list_count = $_POST['list_count'];
for ($i=0; $i<=$list_count; $i++){
$wr_id = $_POST['wr_id'][$i];
$wr_1 = $_POST['wr_1'][$i];
$sql = " update $write_table set wr_1 = '$wr_1' where wr_id='$wr_id' ";
$result = sql_query($sql);
}
alert($sql);
goto_url('./board.php?bo_table='.$bo_table.'&subject='.$subject.'&page='.$page.$qstr);
?>
일단 for 문 안에서 $sql 찍어보심이...