채택완료

리스트에서 여분필드 수정

2020-01-29 (수) 15:06:09 3,284

안녕하세요.

현재 리스트에서 여분필드 수정건 때문에 자꾸 질문 글을 올리게 되네요. 

일전의 답글의 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

Copy
<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

Copy
<?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

Copy
<?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개 / 댓글 4개

채택된 답변
+20 포인트

아마도 리스트 파일에서 값을 넘기실때 name="wr_1[<?echo $i?>]"> 의 값과

for 문 안에서의 $i 값이 일치하지 않아서 생기는 것 같습니다.

답변에 대한 댓글 1개

2020-01-29 (수) 18:15:36
답변 감사드립니다.

결국 view 부분으로 옮겨서 처리했습니다^^

비록 해결되진 못했지만 귀한 시간 내주신 메이드님 감사합니다.
2021-01-07 (목) 14:55:10

같은 문제점으로 고민을 하다 뭔가 값이 제대로 넘어오지 않는 것 같아서 이리 저리 확인해 보다 아래와 같이 수정하니 해결이 되었습니다.  공개된 소스에 도움을 받았습니다. 감사합니다.

// 보드스킨 list.skin.php

Copy
<?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) { ?> 이 끝나는 

Copy
<?php } ?>

를 아래와 같이 수정합니다.

Copy
<?php $list_count = $i; } ?>
<input type="hidden" name="list_count" id="list_count" value="<?php echo $list_count ?>">

// bbs/list_update.php 를 아래와 같이 수정합니다.

Copy
<?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); 
?>

답변에 대한 댓글 1개

2021-01-09 (토) 13:25:32
다른 분들이 보고 도움을 많이 얻어 가셨으면 합니다.

늦은 인사지만 도움 감사드립니다.

일단 for 문 안에서 $sql 찍어보심이...

답변에 대한 댓글 2개

2020-01-29 (수) 16:48:18
답변 감사드립니다.

for 문 내에서 찍어도 마찬가지 현상이 일어납니다..
올려 주신 글만으로는 오류를 찾기가 어렵네요.
리스트 파일에서 문제가 있지 않나 싶긴 한데..

답변을 작성하려면 로그인이 필요합니다.