[질문 수정] 업데이트 문의드립니다. > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

[질문 수정] 업데이트 문의드립니다. 정보

[질문 수정] 업데이트 문의드립니다.

본문

스크랩(scrap) 테이블에 필드 하나를 추가하고,
그 필드를 업데이트하려고 하는데요.

※ 추가된 필드 : chk_alb (필드값에 따라 앨범스크랩이라는 항목에 넣음)
※ 추가된 필드에 업데이트되는 내용 : '1' or ' '
 → 스크랩하는 내용에 chk_alb='1'이면 앨범스크랩에 포함
 → 스크랩하는 내용에 chk_alb=' '이면 앨범스크랩에 포함하지 않음


/////////////////////////////////////////////////////////////////////////////////////////

먼저, scrap.skin이라는 php에서
체크박스를 통해 전체선택, 개별선택을 할 수 있게 해 주었습니다.

① 전체선택 체크박스
<input type='checkbox' name='chk_scrap' onclick='if (this.checked) all_checked(true); else all_checked(false);'>

② for문에 들어가는 개별 스크랩항목 앞의 체크박스
<input type='checkbox' name='chk_scrap[]' value='<?=$list[$i][ms_id]?>'>

③ 스크립트
<script language="Javascript">
// 게시물 선택
function all_checked(sw) {
    var f = document.fboardlist;
    for (var i=0; i<f.length; i++) {
        if (f.elements[i].name == "chk_scrap[]")
            f.elements[i].checked = sw;
    }
}

function check_confirm(str) {
    var f = document.fboardlist;
    var chk_count = 0;
    for (var i=0; i<f.length; i++) {
        if (f.elements[i].name == "chk_scrap[]" && f.elements[i].checked)
            chk_count++;
    }
    if (!chk_count) {
        alert(str + "할 게시물을 하나 이상 선택하세요.");
        return false;
    }
    return true;
}

// 선택한 게시물을 업데이트
function select_update() {
    var f = document.fboardlist;
    str = "앨범스크랩에 포함";
    if (!check_confirm(str))
        return;
    if (!confirm("선택한 게시물을 "+str+" 하시겠습니까?"))
        return;
    f.action = "./scrap_album_update.php?";
    f.submit();
}

</script>

----------※ 일단 이 부분까지는 정상 작동합니다.
----------※ 전체선택, 개별선택과 업데이트 경고창은 정상적으로 뜹니다.

/////////////////////////////////////////////////////////////////////////////////////////


★★★ 위의 것을 업데이트하는 것이 난제입니다.
설날 연휴 내내 연구해 보고, 검색해 보았지만, 너무 허접한 초보라서 눈에 잘 띄지가 않네요.

업데이트를 위해 만든 ★scrap_album_update.php

<?
include_once("./_common.php");

if (!$member[mb_id])
    alert("회원만 이용하실 수 있습니다.");

$sql = " select count(*) as cnt from $g4[scrap_table]  // 스크랩테이블에서 가져옴
          where mb_id = '$member[mb_id]' // 스크랩한 회원
              and bo_table = '$bo_table'    // 스크랩한 board테이블
              and wr_id = '$wr_id'            // 스크랩한 board테이블의 wr_id
              and chk_alb = '1' ";            // 업데이트하려는 내용, chk_alb필드를 1로 업데이트
$row = sql_fetch($sql);

if ($row[cnt])
    alert_close("이미 앨범스크랩에 포함된 글입니다.");

$tmp_array = array();
if ($ms_id) { // 건별 업데이트
    $tmp_array[0] = $ms_id;
} else { // 전체 업데이트
    $tmp_array = $_POST[chk_scrap];
}

for ($i=count($tmp_array); $i>=0; $i++)
{
sql_query("update $g4[scrap_table] set chk_alb = '1' where ms_id ='{$tmp_array[$i]}' and mb_id = '$member[mb_id]' ");
}

goto_url("./scrap_album.php?");
?>

/////////////////////////////////////////////////////////////////////////////////////////


현재 위 "★scrap_album_update.php"는
① "이미 앨범스크랩에 포함된 글입니다" 검사를 하지 못하고,
② 정상적으로 업데이트도 진행되지 않습니다.

소스를 어떻게 잡아줘야 할까요?
설날 내내 고민한 문제를 끝내 풀지 못하고, 고수님들의 도움을 부탁드립니다. 
새해 복 많이 받으십시오.
  • 복사

댓글 전체

$sql = " select count(*) as cnt from $g4[scrap_table]  // 스크랩테이블에서 가져옴
          where mb_id = '$member[mb_id]' // 스크랩한 회원
              and bo_table = '$bo_table'    // 스크랩한 board테이블
              and wr_id = '$wr_id'            // 스크랩한 board테이블의 wr_id
              and chk_alb = '1' ";            // 업데이트하려는 내용, chk_alb필드를 1로 업데이트

echo $sql; exit;
로 해서 sql이 정상적으로 만들어 졌는지 확인해 보세요.
아... 지금 엑스엠엘님께서 알려주신 대로 해보니까,
chk_alb의 값을 찍어내지 못하네요......... 아우... 이런 경우가 있네요.

아직 해결은 못했지만 문제를 파악하는 데
엑스엠엘님의 팁이 큰 도움이 되었습니다.

감사드립니다.
© SIRSOFT
현재 페이지 제일 처음으로