게시물 순서 변경 > 그누보드5 팁자료실

그누보드5 팁자료실

게시물 순서 변경 정보

게시물 순서 변경

본문

게시판 순서 변경===================================================
1. list.skin.php 에서 관리자 전용 버튼 에 다음 버튼을 넣는다.
<a href="javascript:select_move('prev');" class="btn_b02">앞으로 이동</a> 
<a href="javascript:select_move('change');" class="btn_b02">교차 변경</a> 
<a href="javascript:select_move('next');" class="btn_b02">뒤로 이동</a> 

2. list.skin.php 파일 하단에 스크립트 추가
// 선택한 순서변경 
function select_move(sw) 

    /*
    var chk_count = 0;

    for (var i=0; i<f.length; i++) {
        if (f.elements[i].name == "chk_wr_id[]" && f.elements[i].checked)
            chk_count++;
    }

    if (!chk_count) {
        alert(document.pressed + "할 게시물을 하나 이상 선택하세요.");
        return false;
    }
    */

    var f = document.fboardlist; 

    var sub_win = window.open("", "move", "width=0, height=0, scrollbars=1"); 

    f.sw.value = sw; 
    f.target = "move"; 
    f.action = "./move_update2.php"; 
    f.submit(); 

</script>

3.게시물 순서 변경 파일 생성 (/bbs/move_update2.php)
<?php
include_once('./_common.php');
// 게시판 관리자 이상 복사, 이동 가능 
if ($is_admin != "board" && $is_admin != "group" && $is_admin != "super") 
    alert_close("게시판 관리자 이상 접근이 가능합니다."); 

$wr_id=$_POST[chk_wr_id][0]; 
if($_POST[chk_wr_id][1]) $wr_id2=$_POST[chk_wr_id][1]; 

if($sw=="change"){ 
    if(count($_POST[chk_wr_id])==2){
    
    $act = "순서변경"; 

    $sql = " select wr_num from g5_write_{$bo_table} where wr_id='$wr_id'"; //절대값이 높은(위쪽) wr_num값을 구한다.
    $result = sql_query($sql); 
    $forth_wr_num_array=sql_fetch_array($result); 
    $wr_id;
    $forth_wr_num = $forth_wr_num_array['wr_num']; //절대값이 높은 wr_num값
    $sql = " select wr_num from g5_write_{$bo_table} where wr_id='$wr_id2'"; //절대값이 낮은(아래쪽) wr_num값을 구한다.
    $result = sql_query($sql); 
    $back_wr_num_array=sql_fetch_array($result); 
    $wr_id2;
    $back_wr_num = $back_wr_num_array['wr_num']; //절대값이 낮은 wr_num값

    sql_query(" update g5_write_{$bo_table} set wr_num = '$back_wr_num' where wr_id = '$wr_id'"); //위쪽 게시물 wr_num을 아래쪽 wr_num으로 수정
    sql_query(" update g5_write_{$bo_table} set wr_num = '$forth_wr_num' where wr_id = '$wr_id2'"); //아래쪽 게시물 wr_num을 위쪽 wr_num으로 수정

    }else{
        alert_close("2개의 게시물을 선택해주세요."); 
    }

}else if($sw == "prev"){ 
    if(count($_POST[chk_wr_id])>=2){alert_close("1개의 게시물만 선택해주세요."); }


    $act = "앞으로 이동"; 

    $sql = " select wr_num from g5_write_{$bo_table} where wr_id='$wr_id'"; //선택된 wr_num값을 구한다.
    $result = sql_query($sql); 
    $selected_wr_num_array=sql_fetch_array($result); 
    $selected_wr_num = $selected_wr_num_array['wr_num']; //선택된 wr_num값
    if($selected_wr_num=='-1') alert_close("가장 앞선 게시물입니다."); 
    $prev_wr_num = $selected_wr_num+1; //앞의 wr_num 값
    $sql = " select wr_id from g5_write_{$bo_table} where wr_num='{$prev_wr_num}'"; //앞의 wr_num값을 갖는 wr_id를 구한다.
    $result = sql_query($sql); 
    $prev_wr_id_array=sql_fetch_array($result);
    $prev_wr_id = $prev_wr_id_array['wr_id']; //앞의 wr_id 값

    sql_query(" update g5_write_{$bo_table} set wr_num = '$prev_wr_num' where wr_id = '$wr_id'"); //선택된 게시물을 앞번으로 수정
    sql_query(" update g5_write_{$bo_table} set wr_num = '$selected_wr_num' where wr_id = '$prev_wr_id'"); //앞번 게시물을 선택된번으로 수정

}else if ($sw == "next") { 
    if(count($_POST[chk_wr_id])>=2){alert_close("1개의 게시물만 선택해주세요."); }
    
    $act = "뒤로 이동"; 

    $sql = " select wr_num from g5_write_{$bo_table} where wr_id='$wr_id'"; //선택된 wr_num값을 구한다.
    $result = sql_query($sql); 
    $selected_wr_num_array=sql_fetch_array($result); 
    $selected_wr_num = $selected_wr_num_array['wr_num']; //선택된 wr_num값
    $latest_wr_num_array = sql_fetch(" select min(wr_num) as latest from g5_write_{$bo_table} where 1");
    if($selected_wr_num == $latest_wr_num_array['latest']) alert_close("가장 뒤선 게시물입니다.");
    $next_wr_num = $selected_wr_num-1; //뒤의 wr_num 값
    $sql = " select wr_id from g5_write_{$bo_table} where wr_num='{$next_wr_num}'"; //뒤의 wr_num값을 갖는 wr_id를 구한다.
    $result = sql_query($sql); 
    $next_wr_id_array=sql_fetch_array($result);
    $next_wr_id = $next_wr_id_array['wr_id']; //뒤의 wr_id 값

    sql_query(" update g5_write_{$bo_table} set wr_num = '$next_wr_num' where wr_id = '$wr_id'"); //선택된 게시물을 뒷번으로 수정
    sql_query(" update g5_write_{$bo_table} set wr_num = '$selected_wr_num' where wr_id = '$next_wr_id'"); //뒷번 게시물을 선택된번으로 수정


}else { 
    alert("수행 값이 제대로 넘어오지 않았습니다."); 

$msg = "순서변경완료!"; 
$opener_href = "./board.php?bo_table=$bo_table&page=$page&$qstr"; 

?>
<script language="javascript"> 
//alert("<?php echo $msg?>"); 
opener.document.location.href = "<?php echo $opener_href?>"; 
window.close(); 
</script> 

 

※참고사항 : 게시물 앞으로,뒤로 이동시 이동이 안되는 경우가 발생 할 수 있습니다. 이는 선택한 게시물의wr_num가 1씩 증가하거나 감소하는 방식인데 선택한 게시물  바로 앞 게시물의 wr_num혹 은 바로 뒤 게시물의 wr_num이 선택한 wr_num보다 1초과의 숫자가 차이나기 때문입니다.
숫자가 계속해서 변하게 되면 추후에 정상적으로 이동됩니다.

 

추천
6

댓글 22개

3.게시물 순서 변경 파일을 /bbs/ 에 넣어준다.
<?php
생략
?>
<script language="javascript">
생략
</script>
 
위의 3. 내용을 bbs/move_update2.php로 만드는 것인가요?
bbs/move_update2.php로 저장하여 list.skin.php에서 부르니까...
move_update2.php파일을 찾을 수 없다고 하면서 에러가 나는군요~

bbs/move.php에 다음과 같은 구문이 있는 것을 보면 이것과도 관련이 있는 것 같은데...ㅜ
<form name="fboardmoveall" method="post" action="./move_update.php" onsubmit="return fboardmoveall_submit(this);">

f.action = './move_update.php';

이 것을 어떻게 적용을 하여야 하는지 알려주시면 감사하겠습니다.
좋은정보 감사합니다! 그런데 이렇게 순서를 변경한 게시판을 최신글로 불러오니, 게시물 순서를 변경하기 전 순서대로 최신글 이미지가 나오더라구요ㅠㅠㅠ 따로 수정해야 하는 부분 있을까요?
최신글이 케싱되어있어서 그럴것같네요.
최신글 케싱하지말고 바로바로 끌어오는방식으로 바꾸셔야합니다.
config.php 인가 common.php 파일에서 설정할 수 있을거에요.

저같은 문제가 있는신분이 있을까봐 댓글남겨요
g5_write_{$bo_table} 이부분이
앞에 g5_ 가 아니라 예로들어 (name_write_free)로 바꾸신 분은 수정하셔야 작동됩니다!

list.skin.php 내용 에서 '관리자전용버튼' 이 어디 있을까요? ㅠ

/skin/board/basic/list.skin.php 를 에디터로 보았는데 '관리자전용버튼'을 못찾겠어요.

도움 부탁드립니다~

@백수라네 관리자인 경우에만 나타나는 버튼이 있습니다. 이를 표현한 것입니다. 지금 변수명 기억이 안나는데 아마도 $is_admin 변수 조건 만족시 아래 나타나는 코드들입니다. (전체 삭제, 복사 등)

전체 2,424 |RSS
그누보드5 팁자료실 내용 검색

회원로그인

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