게시판관리 - 게시판코드생성 로직 Backend

이태현·2025년 8월 21일

Web 개발

목록 보기
27/53
post-thumbnail

게시판 - JS

document.addEventListener("DOMContentLoaded", () => {
  const btn_board_create = document.querySelector("#btn_board_create")

  btn_board_create.addEventListener("click", () => {
    const board_title = document.querySelector("#board_title")
    const board_type = document.querySelector("#board_type")

    if (board_title.value == "") {
      alert("게시판 이름을 입력해 주세요.")
      board_title.focus()
      return false
    }

    const xhr = new XMLHttpRequest()
    const f = new FormData()

    f.append("board_title", board_title.value)
    f.append("board_type", board_type.value)
    f.append("mode", "input")

    xhr.open("post", "pg/board_process.php", true)
    xhr.send(f)

    xhr.onload = () => {
      if (xhr.status == 200) {
        const data = JSON.parse(xhr.responseText)
        // console.log(data)
        if (data.result == "mode_empty") {
          alert("Mode 값이 누락되었습니다.")
          return false
        } else if (data.result == "title_empty") {
          alert("게시판 명이 누락되었습니다.")
          board_title.focus()
          return false
        } else if (data.result == "btype_empty") {
          alert("게시판 타입이 누락되었습니다.")
          return false
        } else if (data.result == "success") {
          alert("게시판이 생성되었습니다.")
          location.reload()
        }
      } else {
        alert("통신 실패 " + xhr.status)
      }
    }
  })

  // 게시판 생성 버튼 클릭
  const btn_create_modal = document.querySelector("#btn_create_modal")
  btn_create_modal.addEventListener("click", () => {
    board_title.value = ""
    return false
  })
})

게시판 - Backend

<?php

include "../inc_common.php";
include "../../inc/dbconfig.php";
include "../../inc/board.php";

$board_title = (isset($_POST["board_title"]) && $_POST["board_title"] != "") ? $_POST["board_title"] : "";
$board_type = (isset($_POST["board_type"]) && $_POST["board_type"] != "") ? $_POST["board_type"] : "";
$mode = (isset($_POST["mode"]) && $_POST["mode"] != "") ? $_POST["mode"] : "";

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

$board = new Board($db);

// 게시판 생성
if ($mode == "input") {
  if ($board_title == "") {
    $arr = ["result" => "title_empty"];
    die(json_encode($arr));
  }
}

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

// 게시판 코드 생성
$bcode = $board->bcode_create();

// 게시판 생성
$arr = [
  "name" => $board_title,
  "btype" => $board_type,
  "bcode" => $bcode
];

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

게시판 - DB

<?php
// 게시판 관리 Class

class Board
{
  private $conn;

  // 생성자
  public  function __construct($db)
  {
    $this->conn = $db;
  }

  // 게시판 목록
  public function list()
  {
    $sql = "SELECT idx, name, bcode, btype, cnt, DATE_FORMAT(create_at,'%Y-%m-%d %H-%i') AS create_at 
    FROM board_manage
    ORDER BY idx ASC";

    $stmt = $this->conn->prepare($sql);
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    $stmt->execute();

    return $stmt->fetchAll();
  }

  // 게시판 생성
  public function create($arr)
  {
    $sql = "INSERT INTO board_manage(name, bcode, btype, create_at) values (:name, :bcode, :btype, NOW())";

    $stmt = $this->conn->prepare($sql);
    $stmt->bindParam(":name", $arr["name"]);
    $stmt->bindParam(":bcode", $arr["bcode"]);
    $stmt->bindParam(":btype", $arr["btype"]);

    $stmt->execute();
  }

  // 게시판 코드 생성
  public function bcode_create()
  {
    $letter = range("a", "z");
    $bcode = "";
    for ($i = 0; $i < 6; $i++) {
      $r = rand(0, 25);
      $bcode .= $letter[$r];
    }
    return $bcode;
  }
}

마무리

다음 시간에는 테이블 인덱스(index)를 사용해 중복 처리 부분을 처리해 보겠습니다.

감사합니다.

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

0개의 댓글