게시판 관리 - 게시판 삭제, 중복생성 막기

이태현·2025년 8월 23일

Web 개발

목록 보기
29/53
post-thumbnail

게시판 삭제 - 실행

// 게시판 글 삭제
if ($mode == "delete") {
  $board->delete($idx);
  $arr = ["result" => "success"];
  die(json_encode($arr));
}

게시판 삭제 - Ajax

  // 삭제버튼
  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()

        xhr.open("post", "pg/board_process.php", true)
        f.append("idx", idx)
        f.append("mode", "delete")
        xhr.send(f)

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

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

게시판 삭제 - DB

  // 게시판 idx로 게시판 정보 가져오기
  public function getBCode($idx)
  {
    $sql = "SELECT bcode FROM board_manage WHERE idx=:idx";
    $stmt = $this->conn->prepare($sql);
    $stmt->bindParam(":idx", $idx);
    $stmt->setFetchMode(PDO::FETCH_COLUMN, 0);
    $stmt->execute();
    return $stmt->fetch();
  }
  // 게시판 삭제
  public function delete($idx)
  {
    // bcode
    $bcode = $this->getBCode($idx);

    $sql = "DELETE FROM board_manage WHERE idx=:idx";
    $stmt = $this->conn->prepare($sql);
    $stmt->bindParam(":idx", $idx);

    $stmt->execute();
	// 게시물 삭제
    $sql = "DELETE FROM board WHERE bcode=:bcode";
    $stmt = $this->conn->prepare($sql);
    $stmt->bindParam(":bcode", $bcode);

    $stmt->execute();
  }

중복생성 막기

  • 네트워크 환경이 좋지 않을 경우 통신이 밀리면서 생성을 연달아 클릭하는 경우가 있습니다. 그렇게 되면 중복이 생기기 때문에 이러한 문제점을 막기 위해서 간단하게 해결해 보겠습니다.
  • 방법은 간단합니다. 해당 확인 버튼을 막아버리면 됩니다. 게시판을 생성한 후 확인 버튼을 disabled 시키면 네트워크가 느려서 밀리는 경우에도 기능을 사용할 수 없기 때문에 간단히 해결이 됩니다.
btn_board_create.disabled = "disabled"

결과

  • 아래 사진과 같이 disabled가 중복되어 생성되지 않았습니다.

마무리

다음 시간에는 Modal 하나로 등록 및 수정을 같이 사용해 보겠습니다.

감사합니다.

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

0개의 댓글