웹마스터 팁

제로보드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 순으로 조정 해 주었습니다. 

 

그 결과 최근댓글과 최근게시물이 정상적으로 출력되고 있습니다.