회원 삭제 후 mb_no 번호 정렬

회원 삭제 후 mb_no 번호 정렬

QA

회원 삭제 후 mb_no 번호 정렬

그누보드5(영카트) 버전

5.6.13

사용 PHP 버전

8.4

본문

회원 삭제 시 정보가 완전하게 삭제하도록 수정을 하였습니다.

회원 삭제 후 mb_no 번호가 중간중간 비어 있는데, 혹시 삭제할 때마다 번호를 재정렬하는 방법이 있을까요?

 

3번을 지우면 4번 부터 3, 4, 5... 이렇게

 

고수님들 답변 부탁 드립니다.

감사합니다.

이 질문에 댓글 쓰기 :

답변 3

<?php
include_once('./common.php'); // 그누보드 환경 포함

// 관리자 체크
if (!$is_admin) {
    die("관리자만 실행할 수 있습니다.");
}

// 트랜잭션 시작 (InnoDB인 경우 유효)
sql_query("START TRANSACTION");

$sql = "SELECT mb_id FROM g5_member ORDER BY mb_no ASC";
$result = sql_query($sql);

$new_no = 1;
$map = [];

// 1단계: mb_no를 중복 피하기 위해 임시 음수 번호로 먼저 설정
while ($row = sql_fetch_array($result)) {
    $mb_id = $row['mb_id'];
    $temp_no = -$new_no; // 예: -1, -2, -3 ...

    sql_query("UPDATE g5_member SET mb_no = '{$temp_no}' WHERE mb_id = '{$mb_id}'");
    $map[] = ['mb_id' => $mb_id, 'new_no' => $new_no];

    $new_no++;
}

// 2단계: 임시 번호 → 실제 번호로 재설정
foreach ($map as $m) {
    sql_query("UPDATE g5_member SET mb_no = '{$m['new_no']}' WHERE mb_id = '{$m['mb_id']}'");
}

sql_query("COMMIT");

echo "? mb_no 재정렬 완료! 총 {$new_no} 명 처리됨.";
?>

해당은 고유로 자동 증가라서 그렇게 하고 싶으시면 따로 번호를 하나 만드시고 관리를 하는게 나으실거 같습니다. 처리하는 방법은 따로 만든 번호를 만약 번호 5면 5이상인 6부터 하나씩 빼는 쿼리를 만드시면 될 거 같습니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 62,867
QA 내용 검색

회원로그인

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