<dd>
<button type="button" onclick="moveUp(this)">올리기</button>
<button type="button" onclick="moveDown(this)">내리기</button>
</dd>
<script type="text/javascript">
function moveUp(el){
var $tr = $(el).parent().parent(); // 클릭한 버튼이 속한 tr 요소
$tr.prev().before($tr); // 현재 tr 의 이전 tr 앞에 선택한 tr 넣기
}
function moveDown(el){
var $tr = $(el).parent().parent(); // 클릭한 버튼이 속한 tr 요소
$tr.next().after($tr); // 현재 tr 의 다음 tr 뒤에 선택한 tr 넣기
}
</script>
올리기 버튼을 누르면 리스트에서 글이 올라가고 내리기 버튼을 누르면 글이 밑으로 내려갑니다.
근데 새로고침을하거나 다른 게시판에 갔다가 다시 요 페이지로 오면
기존의 순서로 바껴있네요
이거 어떻게 해결해야하나요?
db를 만져야하는건가요?
답변 2개 / 댓글 4개
채택된 답변
+20 포인트
2016-10-24 (월) 12:09:22
네 db에서 마찬가지로 업데이트로 게시글의 번호를 바꾸어주어야합니다.
답변에 대한 댓글 2개
2016-10-24 (월) 13:59:54
devdev
2016-10-24 (월) 13:41:34
ajax등으로 DB도 변경해주셔야 하겠습니다.
댓글 같은게 있다면 무작정 일련번호를 바꾸시면 안되고..
분석이 필요합니다.
답변에 대한 댓글 2개
2016-10-24 (월) 13:50:57
네 지금 ajax를 이용하여 db변경을 해주려고 하는데..
$.ajax({
url: '/move_event.php',
type: 'post',
dataType: 'json',
data: {var1: '변수1', var2:'변수2'},
success: function(data) {
console.log(data);
}
});
이렇게 해주는게 맞는지요?
data에 무얼 넣어주어야하는지 모르겠습니다..
어떤 변수를 말하는건지..흠;
$.ajax({
url: '/move_event.php',
type: 'post',
dataType: 'json',
data: {var1: '변수1', var2:'변수2'},
success: function(data) {
console.log(data);
}
});
이렇게 해주는게 맞는지요?
data에 무얼 넣어주어야하는지 모르겠습니다..
어떤 변수를 말하는건지..흠;
2016-10-24 (월) 13:57:52
data는 wr_id가 넘어가야겠죠
게시물의 번호가 있어야 해당 게시물의 번호를 db에서 찾아서 변경 할테니까요
딱 봐도 필요한변수가 최소 2가지가 존재하리라고 생각되네요
1.해당 게시물의 번호
2.게시물을 up,down의 이벤트 동작
이렇게 최소 2가지는 넘겨주고
다음 move_event.php 파일에서 해당 게시물 번호의 동작이 up이라면 바로위에있는 게시물의 번호를 찾아서 위에있는 게시물은 down으로 db에서 게시물의 번호(num,wr_id,wr_parent)등
필요한 부분의 값을 2개의 게시글을 스왑(교체) 해줍니다.
그러면 해당 게시물은 올라갈것이고 기존에 위에있던 게시물은 내려오겠죠
이부분만 건들여서 되는건아니고
board_new 테이블에서도 해당 게시물의 번호를 바꾸어줘야하고
board_file 테이블에서도 해당 게시글의 등록된 파일의 번호를 교체해줘야합니다.
그리고 댓글이 있을경우도 있기때문에
댓글들의 모든 번호를 다시 교체해주어야합니다.
게시물의 번호가 있어야 해당 게시물의 번호를 db에서 찾아서 변경 할테니까요
딱 봐도 필요한변수가 최소 2가지가 존재하리라고 생각되네요
1.해당 게시물의 번호
2.게시물을 up,down의 이벤트 동작
이렇게 최소 2가지는 넘겨주고
다음 move_event.php 파일에서 해당 게시물 번호의 동작이 up이라면 바로위에있는 게시물의 번호를 찾아서 위에있는 게시물은 down으로 db에서 게시물의 번호(num,wr_id,wr_parent)등
필요한 부분의 값을 2개의 게시글을 스왑(교체) 해줍니다.
그러면 해당 게시물은 올라갈것이고 기존에 위에있던 게시물은 내려오겠죠
이부분만 건들여서 되는건아니고
board_new 테이블에서도 해당 게시물의 번호를 바꾸어줘야하고
board_file 테이블에서도 해당 게시글의 등록된 파일의 번호를 교체해줘야합니다.
그리고 댓글이 있을경우도 있기때문에
댓글들의 모든 번호를 다시 교체해주어야합니다.
답변을 작성하려면 로그인이 필요합니다.
완벽한 소스는 아니나
대략 어떤느낌인지 보시기바랍니다.
$table = $g5['write_prefix'].$_GET['bo_table'];
$inqty1 = ($_GET['mode']=="up")? ">" : "<";
$inqty2 = ($_GET['mode']=="up")? "asc" : "desc";
$inqty3 = ($_GET['mode']=="up")? "최상위" : "최하위";
$data_path = $g5[path]."/data/file/".$_GET['bo_table'];
$thumb_path = $data_path.'/thumb';
// MY ROW
$sel_my = sql_query("select * from $table where wr_id={$_GET[wr_id]}");
$my = sql_fetch_array($sel_my);
// TARGET ROW
$sel_target = sql_query("select * from $table where wr_id{$inqty1}{$_GET[wr_id]} order by wr_id {$inqty2} limit 1");
$target = sql_fetch_array($sel_target);
if($target['wr_id']){
//my 넘버를 임시로 바꾼후, target 넘버를 my로, my 넘버를 target으로..
sql_query("update $table set wr_id=99999, wr_num=99999, wr_parent=99999 where wr_id={$my[wr_id]} ");
sql_query("update $table set wr_id={$my[wr_id]}, wr_num={$my[wr_num]}, wr_parent={$my[wr_parent]} where wr_id={$target[wr_id]} ");
sql_query("update $table set wr_id={$target[wr_id]}, wr_num={$target[wr_num]}, wr_parent={$target[wr_parent]} where wr_id=99999 ");
//my 파일테이블도 마찬가지로 바꿈
sql_query("update {$g5[board_file_table]} set wr_id=99999 where bo_table='{$_GET[bo_table]}' and wr_id={$my[wr_id]}");
sql_query("update {$g5[board_file_table]} set wr_id={$my[wr_id]} where bo_table='{$_GET[bo_table]}' and wr_id={$target[wr_id]}");
sql_query("update {$g5[board_file_table]} set wr_id={$target[wr_id]} where bo_table='{$_GET[bo_table]}' and wr_id=99999");
@unlink($thumb_path."/".$my[wr_id]);
@unlink($thumb_path."/".$target[wr_id]);
//echo "<script type='text/javascript'>alert('변경되었습니다');</script>";
echo "<script type='text/javascript'>parent.document.location.reload();</script>";