리스트에서 여분필드 수정

리스트에서 여분필드 수정

QA

리스트에서 여분필드 수정

답변 3

본문

안녕하세요.

 

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

 

일전의 답글의 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 찍어보심이...

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