회원관리 - 회원삭제

이태현·2025년 8월 14일

Web 개발

목록 보기
22/53
post-thumbnail

Delete - JS

  • 회원 삭제를 시키려고 하다 보니 삭제 버튼이 여러 개 중복되어 있고, 해당 데이터만 삭제하려면 idx 값도 필요합니다.
<button class="btn btn-danger btn-sm btn_mem_delete" data-idx="<?= $row["idx"]; ?>">삭제</button>

그래서 필자는 중복되는 버튼을 해당 프로퍼티에 data-set을 설정하여 idx 값을 부여하고 개별의 삭제 버튼을 foreach() 문을 이용하여 삭제 기능을 만들어줬습니다.

  // 삭제 버튼
  const btn_mem_deletes = document.querySelectorAll(".btn_mem_delete")

  btn_mem_deletes.forEach((box) => {
    box.addEventListener("click", () => {
      if (confirm("회원을 삭제하시겠습니까?")) {

        const idx = box.dataset.idx

        const xhr = new XMLHttpRequest()

        const f = new FormData()
        f.append("idx", idx)

        xhr.open("post", "member_del.php", "true")
        xhr.send(f)

        xhr.onload = () => {
          if (xhr.status == 200) {
            const data = JSON.parse(xhr.responseText)

            if (data.result == "success") {
              location.reload()
            }
          } else {
            alert("통신실패")
          }
        }

        alert("삭제완료")
      } else {
        alert("삭제취소")
      }
    })
  })

Delete - DB

  // 회원삭제
  public function member_del($idx)
  {
    $sql = "DELETE FROM member WHERE idx=:idx";
    $stmt = $this->conn->prepare($sql);
    $stmt->bindParam(":idx", $idx);
    $stmt->execute();
  }

Delete - Ajax

<?php

session_start();

$ss_id = (isset($_SESSION["id"]) && $_SESSION["id"] != "") ? $_SESSION["id"] : "";
$ss_level = (isset($_SESSION["level"]) && $_SESSION["level"] != "") ? $_SESSION["level"] : "";

if ($ss_id == "" || $ss_level != 99) {
  $arr = ["result" => "access_denied"];
  die(json_encode($arr));
}

include "../inc/dbconfig.php";
include "../inc/member.php";

$idx = (isset($_POST["idx"]) && $_POST["idx"] != "" && is_numeric($_POST["idx"])) ? $_POST["idx"] : "";

if ($idx == "") {
  $arr = ["result" => "empty_idx"];
  die(json_encode($arr));
}

$mem = new Member($db);

$mem->member_del($idx);

$arr = ["result" => "success"];
die(json_encode($arr));

마무리

다음 시간에는 회원을 수정하는 부분을 해보겠습니다.

감사합니다.

profile
이해하고 분석하고 지배한다

0개의 댓글