게시판 - 글 목록, 게시판 목록

이태현·2025년 8월 27일

Web 개발

목록 보기
31/53
post-thumbnail

게시판관리 보기버튼 추가

  • 보기버튼 클릭 시 해당 게시물로 이동합니다.
<button class="btn btn-success btn-sm btn_board_view" data-bcode="<?= $row["bcode"] ?>">보기</button>

보기버튼 - JS

  // 해당 게시판 이동버튼
  const btn_board_views = document.querySelectorAll(".btn_board_view")

  btn_board_views.forEach((box) => {
    box.addEventListener("click", () => {
      const bcode = box.dataset.bcode

      location.href = "../board.php?bcode=" + bcode
    })
  })

게시판 코드를 사용하여 해당 페이지로 이동하기 때문에 쿼리 스트링을 추가해 줬습니다.

게시판 - UI

게시판 전체코드

<?php

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

// 게시판 목록 불러오기
include "inc/boardmanage.php";

$boardm = new BoardManage($db);
$boardArr = $boardm->list();

$bcode = isset($_GET["bcode"]) && $_GET["bcode"] != "" ? $_GET["bcode"] : "";

if ($bcode == "") {
  die('
  <script>
  alert("게시판 코드가 누락되었습니다.")
  history.back()
  </script>');
}

$board_name = $boardm->getBoardName($bcode);
$board = new Board($db);

$js_array = ['js/board.js'];
$g_title = $board_name;
$menu_code = "board";


include "inc_header.php";
?>

<main class="w-75 mx-auto border rounded-2 p-5">
  <h1 class="text-center"><?= $board_name; ?></h1>

  <table class="table table-striped">
    <tr>
      <th>번호</th>
      <th>제목</th>
      <th>이름</th>
      <th>날짜</th>
      <th>조회 수</th>
    </tr>
    <tr>
      <td>1</td>
      <td>테스트</td>
      <td>이태현</td>
      <td>08-26</td>
      <td>10</td>
    </tr>
  </table>

  <div class="d-flex justify-content-between align-items-start">
    <nav aria-label="Page navigation example">
      <ul class="pagination">
        <li class="page-item"><a class="page-link" href="#">Previous</a></li>
        <li class="page-item"><a class="page-link" href="#">1</a></li>
        <li class="page-item"><a class="page-link" href="#">2</a></li>
        <li class="page-item"><a class="page-link" href="#">3</a></li>
        <li class="page-item"><a class="page-link" href="#">Next</a></li>
      </ul>
    </nav>
    <button class="btn btn-primary" id="btn_write">글쓰기</button>
  </div>

</main>

<?php
include "inc_footer.php";
?>

게시판 목록 불러오기 - 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();
  }

Header 전체 코드

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-LN+7fdVzj6u52u30Kp6M/trliBMCMKTyK833zpbD+pXdCLuTusPj697FH4R/5mcr" crossorigin="anonymous">
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/js/bootstrap.bundle.min.js" integrity="sha384-ndDqU0Gzau9qJ1lfW4pNLlhNTkCfHzAVBReH9diLvGRem5+R9g2FzA8ZGN954O5Q" crossorigin="anonymous"></script>
  <?php
  if (isset($js_array)) {
    foreach ($js_array as $var) {
      echo "<script src='" . $var . "?v=" . date("YmdHis") . "'></script>";
    }
  } ?>
  <title><?= (isset($g_title) && $g_title != "" ? $g_title : "해커들의 놀이터"); ?></title>
</head>

<body>
  <div class="container">
    <header class="d-flex flex-wrap justify-content-center py-3 mb-4 border-bottom">
      <a href="index.php" class="d-flex align-items-center mb-3 mb-md-0 me-md-auto link-body-emphasis text-decoration-none">
        <img src="images/logo.svg" alt="" class="me-2" style="width: 2rem;">
        <span class="fs-4">해커들의 놀이터</span>
      </a>
      <ul class="nav nav-pills">
        <?php if (isset($ss_id) && $ss_id != "") {
          // 로그인 
        ?>
          <li class="nav-item">
            <a href="index.php" class="nav-link <?= $menu_code == "home" ? "active" : ""; ?>">Home</a>
          </li>
          <li class="nav-item">
            <a href="company.php" class="nav-link <?= $menu_code == "company" ? "active" : ""; ?>">소개</a>
          </li>
          <?php if (isset($ss_level) && $ss_level == 10) {
          ?>
            <li class="nav-item">
              <a href="admin/" class="nav-link <?= $menu_code == "admin" ? "active" : ""; ?>">admin</a>
            </li>
          <?php
          } else { ?>
            <li class="nav-item">
              <a href="mypage.php" class="nav-link <?= $menu_code == "mypage" ? "active" : ""; ?>">My Page</a>
            </li>

          <?php } ?>
          <?php
          foreach ($boardArr as $row) {
            echo '<li class="nav-item"><a href="board.php?bcode=' . $row['bcode'] . '" class="nav-link';
            if (isset($_GET['bcode']) && $_GET['bcode'] == $row['bcode']) {
              echo ' active';
            }
            echo '">' . $row['name'] . '</a>
          </li>';
          }
          ?>
          <li class="nav-item">
            <a href="pg/logout.php" class="nav-link <?= $menu_code == "login" ? "active" : ""; ?>">로그아웃</a>
          </li>
        <?php
        } else {
          // 비 로그인
        ?>
          <li class="nav-item">
            <a href="index.php" class="nav-link <?= $menu_code == "home" ? "active" : ""; ?>">Home</a>
          </li>
          <li class="nav-item">
            <a href="company.php" class="nav-link <?= $menu_code == "company" ? "active" : ""; ?>">소개</a>
          </li>
          <li class="nav-item">
            <a href="stipulation.php" class="nav-link <?= $menu_code == "member" ? "active" : ""; ?>">회원가입</a>
          </li>
          <li class="nav-item">
            <a href="board.php" class="nav-link <?= $menu_code == "board" ? "active" : ""; ?>">게시판</a>
          </li>
          <li class="nav-item">
            <a href="login.php" class="nav-link <?= $menu_code == "login" ? "active" : ""; ?>">로그인</a>
          </li>
        <?php
        }
        ?>
      </ul>
    </header>

Header 조건 주기




<?php
          foreach ($boardArr as $row) {
            echo '<li class="nav-item"><a href="board.php?bcode=' . $row['bcode'] . '" class="nav-link';
            if (isset($_GET['bcode']) && $_GET['bcode'] == $row['bcode']) {
              echo ' active';
            }
            echo '">' . $row['name'] . '</a>
          </li>';
          }
          ?>

DB에서 게시판 코드를 불러와서 해당 페이지로 이동해 주는 모습

게시판 코드로 게시판 이름 불러오기 - DB

  // 게시판 코드로 게시판 명 가져오기
  public function getBoardName($bcode)
  {
    $sql = "SELECT name FROM board_manage WHERE bcode=:bcode";
    $stmt = $this->conn->prepare($sql);
    $stmt->bindParam(":bcode", $bcode);
    $stmt->setFetchMode(PDO::FETCH_COLUMN, 0);
    $stmt->execute();

    return $stmt->fetch();
  }

마무리

다음 시간에는 게시글 작성 부분을 해보겠습니다.

감사합니다.

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

0개의 댓글