게시물 순서 변경 정보
게시물 순서 변경본문
게시판 순서 변경===================================================
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개
"점프 기능" 같은 것 필요한 분들에게 좋은 팁 같아요.
이걸 점프기능으로 활용할려면 어떻게 수정해야 할까요?
<?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';
이 것을 어떻게 적용을 하여야 하는지 알려주시면 감사하겠습니다.
bbs/move.php : 무관한 기존 파일입니다.
최신글 케싱하지말고 바로바로 끌어오는방식으로 바꾸셔야합니다.
config.php 인가 common.php 파일에서 설정할 수 있을거에요.
저같은 문제가 있는신분이 있을까봐 댓글남겨요
g5_write_{$bo_table} 이부분이
앞에 g5_ 가 아니라 예로들어 (name_write_free)로 바꾸신 분은 수정하셔야 작동됩니다!
list.skin.php 내용 에서 '관리자전용버튼' 이 어디 있을까요? ㅠ
/skin/board/basic/list.skin.php 를 에디터로 보았는데 '관리자전용버튼'을 못찾겠어요.
도움 부탁드립니다~
@백수라네 관리자인 경우에만 나타나는 버튼이 있습니다. 이를 표현한 것입니다. 지금 변수명 기억이 안나는데 아마도 $is_admin 변수 조건 만족시 아래 나타나는 코드들입니다. (전체 삭제, 복사 등)