게시판 게시물이동시 오류

게시판 게시물이동시 오류

QA

게시판 게시물이동시 오류

본문

오류가 나는곳의 주소를 알려주시면 더 빠르고 정확하게 답변 받을 수 있습니다.

오류 주소 : ./bbs/move_update.php

에 보면  $sql = " insert into $move_write_table ~~

문이 있습니다.

그런데 게시물을 복사나 이동을 하면 리스에 제이 상단에 나옵니다.

그걸 해결하려고 하다보니 wr_id  wr_num  wr_reply  wr_parent  의 필드

즉 이미 옴겨야 하는  곳의 게시판의 순서의 중간에 껴 넣기를 해야하는 방법인데,,

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

// 게시판 관리자 이상 복사, 이동 가능
if ($is_admin != 'board' && $is_admin != 'group' && $is_admin != 'super')
    alert_close("게시판 관리자 이상 접근이 가능합니다.");

if ($sw != "move" && $sw != "copy")
    alert("sw 값이 제대로 넘어오지 않았습니다.");

// 원본 파일 디렉토리
$src_dir = "$g4[path]/data/file/$bo_table";

$save = array();
$save_count_write = 0;
$save_count_comment = 0;
$cnt = 0;

// SQL Injection 으로 인한 코드 보완
//$sql = " select distinct wr_num from $write_table where wr_id in (" . stripslashes($wr_id_list) . ") order by wr_id ";
$sql = " select distinct wr_num from $write_table where wr_id in ($wr_id_list) order by wr_id ";
$result = sql_query($sql);
while ($row = sql_fetch_array($result))
{
    $wr_num = $row[wr_num];
    for ($i=0; $i<count($_POST['chk_bo_table']); $i++)
    {
        $move_bo_table = $_POST['chk_bo_table'][$i];
        $move_write_table = $g4['write_prefix'] . $move_bo_table;

        $src_dir = "$g4[path]/data/file/$bo_table"; // 원본 디렉토리
        $dst_dir = "$g4[path]/data/file/$move_bo_table"; // 복사본 디렉토리

        $count_write = 0;
        $count_comment = 0;

        $next_wr_num = get_next_num($move_write_table);

$sql2_chl = " select count(*) as cnt  from $write_table where wr_num = '$wr_num' order by wr_parent, wr_is_comment, wr_comment desc, wr_id ";

  $result2_chl = mysql_query($sql2_chl);
  $row2_chl = mysql_fetch_array($result2_chl);

//echo $row2_chl[cnt]; //이동할 게시물수


$sql3_chl = " select wr_datetime  from $write_table where wr_num = '$wr_num' and wr_reply ='' order by wr_parent, wr_is_comment, wr_comment desc, wr_id ";
 
// echo  $sql3_chl ;
  $result3_chl = mysql_query($sql3_chl);
  $row3_chl = mysql_fetch_array($result3_chl);
//echo $row3_chl[0]; //이동할 게시 시간


$sql4_chl = " select *  from $move_write_table where wr_datetime>'$row3_chl[wr_datetime]' ORDER BY `wr_datetime` ASC  ";
//echo $sql4_chl;
  $result4_chl = mysql_query($sql4_chl);
 while($row4_chl = mysql_fetch_array($result4_chl)){

if(!$up_wr_num){$up_wr_num=$row4_chl[wr_num];}

$wr_num_up = explode("-",$row4_chl[wr_num]);
$wr_num_up=$wr_num_up[1]+1;

$sql5_chl = "UPDATE $move_write_table SET `wr_num` ='-$wr_num_up' where wr_id='$row4_chl[wr_id]'";
//echo $sql5_chl."<br>";
  $result5_chl = mysql_query($sql5_chl); 

 }


if($up_wr_num){
$next_wr_num=$up_wr_num;
}
//echo $next_wr_num;
//exit;

        //$sql2 = " select * from $write_table where wr_num = '$wr_num' order by wr_parent, wr_comment desc, wr_id ";
        $sql2 = " select * from $write_table where wr_num = '$wr_num' order by wr_parent, wr_is_comment, wr_comment desc, wr_id ";
        $result2 = sql_query($sql2);
        while ($row2 = sql_fetch_array($result2))
        {
            $nick = cut_str($member[mb_nick], $config[cf_cut_name]);
            if (!$row2[wr_is_comment] && $config[cf_use_copy_log])
                $row2[wr_content] .= "";

            $sql = " insert into $move_write_table
                        set wr_num            = '$next_wr_num',
                            wr_reply          = '$row2[wr_reply]',
                            wr_is_comment    = '$row2[wr_is_comment]',
                            wr_comment        = '$row2[wr_comment]',
                            wr_comment_reply  = '$row2[wr_comment_reply]',
                            ca_name          = '".addslashes($row2[ca_name])."',
                            wr_option        = '$row2[wr_option]',
                            wr_subject        = '".addslashes($row2[wr_subject])."',
                            wr_content        = '".addslashes($row2[wr_content])."',
                            wr_link1          = '".addslashes($row2[wr_link1])."',
                            wr_link2          = '".addslashes($row2[wr_link2])."',
                            wr_link1_hit      = '$row2[wr_link1_hit]',
                            wr_link2_hit      = '$row2[wr_link2_hit]',
                            wr_trackback      = '".addslashes($row2[wr_trackback])."',
                            wr_hit            = '$row2[wr_hit]',
                            wr_good          = '$row2[wr_good]',
                            wr_nogood        = '$row2[wr_nogood]',
                            mb_id            = '$row2[mb_id]',
                            wr_password      = '$row2[wr_password]',
                            wr_name          = '".addslashes($row2[wr_name])."',
                            wr_email          = '".addslashes($row2[wr_email])."',
                            wr_homepage      = '".addslashes($row2[wr_homepage])."',
                            wr_datetime      = '$row2[wr_datetime]',
                            wr_last          = '$row2[wr_last]',
                            wr_ip            = '$row2[wr_ip]',
                            wr_1              = '".addslashes($row2[wr_1])."',
                            wr_2              = '".addslashes($row2[wr_2])."',
                            wr_3              = '".addslashes($row2[wr_3])."',
                            wr_4              = '".addslashes($row2[wr_4])."',
                            wr_5              = '".addslashes($row2[wr_5])."',
                            wr_6              = '".addslashes($row2[wr_6])."',
                            wr_7              = '".addslashes($row2[wr_7])."',
                            wr_8              = '".addslashes($row2[wr_8])."',
                            wr_9              = '".addslashes($row2[wr_9])."',
                            wr_10            = '".addslashes($row2[wr_10])."' ";
            sql_query($sql);

            $insert_id = mysql_insert_id();

            // 코멘트가 아니라면
            if (!$row2[wr_is_comment])
            {
                $save_parent = $insert_id;

                $sql3 = " select * from $g4[board_file_table] where bo_table = '$bo_table' and wr_id = '$row2[wr_id]' order by bf_no ";
                $result3 = sql_query($sql3);
                for ($k=0; $row3 = sql_fetch_array($result3); $k++)
                {
                    if ($row3[bf_file])
                    {
                        // 원본파일을 복사하고 퍼미션을 변경
                        @copy("$src_dir/$row3[bf_file]", "$dst_dir/$row3[bf_file]");
                        @chmod("$dst_dir/$row3[bf_file]", 0606);
                    }

                    $sql = " insert into $g4[board_file_table]
                                set bo_table = '$move_bo_table',
                                    wr_id = '$insert_id',
                                    bf_no = '$row3[bf_no]',
                                    bf_source = '$row3[bf_source]',
                                    bf_file = '$row3[bf_file]',
                                    bf_download = '$row3[bf_download]',
                                    bf_content = '".addslashes($row3[bf_content])."',
                                    bf_filesize = '$row3[bf_filesize]',
                                    bf_width = '$row3[bf_width]',
                                    bf_height = '$row3[bf_height]',
                                    bf_type = '$row3[bf_type]',
                                    bf_datetime = '$row3[bf_datetime]' ";
                    sql_query($sql);

                    if ($sw == "move" && $row3[bf_file])
                        $save[$cnt][bf_file][$k] = "$src_dir/$row3[bf_file]";
                }

                $count_write++;

                if ($sw == "move" && $i == 0)
                {
                    // 스크랩 이동
                    sql_query(" update $g4[scrap_table] set bo_table = '$move_bo_table', wr_id = '$save_parent' where bo_table = '$bo_table' and wr_id = '$row2[wr_id]' ");

                    // 최신글 이동
                    sql_query(" update $g4[board_new_table] set bo_table = '$move_bo_table', wr_id = '$save_parent', wr_parent = '$save_parent' where bo_table = '$bo_table' and wr_id = '$row2[wr_id]' ");
                }
            }
            else
            {
                $count_comment++;

                if ($sw == "move")
                {
                    // 최신글 이동
                    sql_query(" update $g4[board_new_table] set bo_table = '$move_bo_table', wr_id = '$insert_id', wr_parent = '$save_parent' where bo_table = '$bo_table' and wr_id = '$row2[wr_id]' ");
                }
            }

            sql_query(" update $move_write_table set wr_parent = '$save_parent' where wr_id = '$insert_id' ");

            if ($sw == "move")
                $save[$cnt][wr_id] = $row2[wr_parent];

            $cnt++;
        }


        sql_query(" update $g4[board_table] set bo_count_write  = bo_count_write  + '$count_write'  where bo_table = '$move_bo_table' ");
        sql_query(" update $g4[board_table] set bo_count_comment = bo_count_comment + '$count_comment' where bo_table = '$move_bo_table' ");
    }

    $save_count_write += $count_write;
    $save_count_comment += $count_comment;
}

if ($sw == "move")
{
    for ($i=0; $i<count($save); $i++)
    {
        for ($k=0; $k<count($save[$i][bf_file]); $k++)
            @unlink($save[$i][bf_file][$k]);   

        sql_query(" delete from $write_table where wr_parent = '{$save[$i][wr_id]}' ");
        sql_query(" delete from $g4[board_new_table] where bo_table = '$bo_table' and wr_id = '{$save[$i][wr_id]}' ");
        sql_query(" delete from $g4[board_file_table] where bo_table = '$bo_table' and wr_id = '{$save[$i][wr_id]}' ");
    }
    sql_query(" update $g4[board_table] set bo_count_write = bo_count_write - '$save_count_write', bo_count_comment = bo_count_comment - '$save_count_comment' where bo_table = '$bo_table' ");
}

$msg = "해당 게시물을 선택한 게시판으로 $act 하였습니다.";
$opener_href = "./board.php?bo_table=$bo_table&page=$page&$qstr";

echo <<<HEREDOC
<meta http-equiv='content-type' content='text/html; charset={$g4['charset']}'>
<script type="text/javascript">
alert("{$msg}");
opener.document.location.href = "{$opener_href}";
window.close();
</script>
HEREDOC;
?>
이런 식으로 해보아지만  해결 이 안되네요 .ㅜ,ㅜ

먼가 다른 방법 이 없을까요?

하려하는 일

  ->  A게시판의 게시물을 B 로 이동

        조건
              -> 게시물의 날짜별 정렬
              -> 답변 게시물의 순서 오류 해결
           
먼가 잡힐듯 한데 안잡히네요ㅠ,ㅠ,
               
 

이 질문에 댓글 쓰기 :

답변 3

일단 게시판에 복사를 하시면 번호가 꼬일텐데
게시판 관리로 들어가셔서 B게시판관리 - 카운트조정에 체크를 하시고 확인해보시면 정렬이 될겁니다.
(그누5 버전에서만 카운트조정이 있습니다)
흠 제가 말하고하는것은  그것이아니라요
  제가 생각하는 것은  전체 게시판이  4천개의 게시물이 있다면
      a게시판의  2013-02-02에 쓴게시물이 b 게시판에 가서 213-02-02 쯤에 껴들어가는 걸 생각하고있고요
        그럴려면  wr_num  필드 조정이 필요하다고 생각 되는거죠
 즉 관리자 모드에서  wr_datetime 으로 정렬을 했을때 쓴날짜 별로 정렬 되는 걸 생각합니다 ㅜ,ㅜ,
답변을 작성하시기 전에 로그인 해주세요.
전체 59,641
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT