웹마스터 팁
데이터 이전 후 list_order 조정
2013.04.07 00:10
제로보드4에서 xe로 데이터 이전 후에 최근게시물과 최근댓글의 순서가 엉망입니다.
조사해 보았더니 list_order 값이 자료 일련번호로 설정되어 있었습니다.
또 [데이터 들여오기]할 때 xe는 읽어오는 게시물에 일련번호를 할당하면서
list_order 값도 같은 값으로 할당하고 있었습니다.
데이터 들여오기 할 때 제로보드4의 등록일시(regdate)를 정확하게 가져왔는데
등록일시 순으로 list_order 값을 새로 설정해 주는 프로그램을 만들어 보았습니다.
다음은 댓글 테이블 xe_comments 에 대한 PHP 프로그램입니다.
echo "<p>";
echo "1. Comment 테이블의 list_order를 regdate 순으로 조정 <br />";
$query = "SELECT comment_srl FROM xe_comments where 1 ORDER BY regdate ASC";
$result = ecsql($query);
$total_record = mysql_num_rows($result);
echo " Comment total count = $total_record <br />";
for ($i=1; $i <= $total_record; $i++) {
$neworder = $i;
$row = mysql_fetch_object($result);
$srl = $row->comment_srl;
$query="UPDATE xe_comments SET list_order='$neworder' WHERE comment_srl='$srl'";
$res = ecsql($query);
}
for ($i=1; $i <= $total_record; $i++) {
$neworder = -$i;
$query="UPDATE xe_comments SET list_order='$neworder' WHERE list_order='$i'";
$res = ecsql($query);
}
echo "</p>";
SELECT 문에서는 테이블의 모든 자료를 등록일시 순으로 읽어 들입니다.
중간의 UPDATE 문에서는 위에서 읽어들인 순서대로 양의 정수를 list_order에 넣어 줍니다.
마지막의 UPDATE에서는 양의 정수로 입력된 list_order를 음의 정수를 변경해 줍니다.
이렇게 양의 정수를 넣었다가 음의 정수로 변경하는 이유는 입력중 list_order의 유일성때문입니다.
같은 방법으로
document 테이블의 list_order를 regdate 순으로 조정
document 테이블의 update_order를 last_update 순으로 조정
member 테이블의 list_order를 last_login 순으로 조정 해 주었습니다.
그 결과 최근댓글과 최근게시물이 정상적으로 출력되고 있습니다.
- [2017/02/10] 묻고답하기 스케치북 최근게시물 상단 탭 오른쪽 여백 없애기
- [2016/12/02] 묻고답하기 스케치북 최근게시물 새글(new) 표시 기간 연장 방법은?
- [2014/04/07] 묻고답하기 메인화면에 있는 최근게시물을 클릭하면 이동을 안합니다. 도움부탁드려요~ *1
- [2012/02/04] 묻고답하기 최근게시물 여러줄 추출에 관하여 질문 있습니다.
- [2011/10/31] 묻고답하기 최근 게시물을 메인페이지에 나오게 하고싶은데 안나오네요..