회원 삭제 후 mb_no 번호 정렬
본문
회원 삭제 시 정보가 완전하게 삭제하도록 수정을 하였습니다.
회원 삭제 후 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} 명 처리됨.";
?>
sql 에서 쿼리보면 맨뒤에 정렬 쿼리 넣어서 order by 고유번호 desc
해당은 고유로 자동 증가라서 그렇게 하고 싶으시면 따로 번호를 하나 만드시고 관리를 하는게 나으실거 같습니다. 처리하는 방법은 따로 만든 번호를 만약 번호 5면 5이상인 6부터 하나씩 빼는 쿼리를 만드시면 될 거 같습니다.