[Normaltic's 취업반 과제] 게시판에 글 등록하기

2024. 5. 5. 18:15정보보안 및 해킹/Normaltic's 취업반 과제

컨셉 한번 지독하다

앞서 글 쓴 것처럼 필자의 웹사이트는 뮤지컬 / 연극 / 콘서트 관극을 기록하는 웹사이트이므로, 관극한 날짜, 카테고리, 공연 이름, 리뷰(선택사항)을 사용자로부터 받아와서 DB에 저장하면 된다.

index.php - 글 등록 버튼 추가 및 등록 페이지로 이동하는 이벤트 발생

[생략]

<div class="repo-category repo-category-btn-header">
        <div>
          <div>
            <button class="my-page-header mypage-btn-outline mypage-btn-skin-outline" name="write" value="writewatched">
              Write </button><br>
              <?php
          if (isset($_POST['write'])) {
            header("location: write_board.php?login_id=" . $user_id);
            exit;
          }
          ?>
          </div>
        </div>
        
        [생략]

write_board.php - 글 등록 페이지. 관극한 날짜를 입력할 수 있도록 하고, DB에 있는 카테고리 enum값을 받아와서 Deopdown으로 띄우고, 공연 이름을 입력하고였고. 후기는 선택사항으로 입력할 수 있도록 NULL로 처리하였다.

<?php
require_once ('write_board_func.php');
?>

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

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <link rel="preconnect" href="https://fonts.googleapis.com">
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  <link
    href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@100..900&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap"
    rel="stylesheet">

  <link rel="stylesheet" href="/css/style.css" />
  <link rel="stylesheet" href="/css/font.css" />
  <title>Write Page</title>
</head>

<body class="header">
  <div class="info">
  <form action="" method="POST">
    <?php
    $user_id = $_GET['login_id'];
    ?>
    <h1> <?php echo $user_id ?>님 즐거운 관극 되셨나요? 그 소중한 추억을 남겨주세요. </h1>

    <label for="watcheddate">Watched Date</label><br>
    <input type="date" name="watcheddate" /><br>
    <label for="category">Category</label><br>
    <select name="category">
      <?php
      $table_name = "category_table";
      $categoryfield = 'Category';
      $result = mysqli_query(connect_db(), 'SHOW COLUMNS FROM ' . $table_name . ' WHERE field="' . $categoryfield . '"');
      while ($row = mysqli_fetch_row($result)) {
        foreach (explode("','", substr($row[1], 6, -2)) as $option) {
          print ("<option>$option</option>");
        }
      }
      ?>
      <select><br>
      <label for="watchedname">공연 이름</label><br>
      <input type="text" name="watchedname" placeholder="watchedName" /><br>
      <label for="watchedreview">관극 후기(선택)</label><br>
      <input type="text" name="watchedreview" placeholder="watchedReview" /><br>
      
      <button class="submit-button" name="write" value="writereview">등록하기</button>
      <?php
      if(isset($_POST['write'])) {
        // echo "here";
        write_watched_review($_POST['watcheddate'], $_POST['category'], $_POST['watchedname'], $_POST['watchedreview']);
      }
      ?>
    </form>
  </div>
</body>

</html>

write_board_func.php - 등록 버튼을 누르면 쿼리 문을 통해 DB에 insert하는 함수가 있다

<?php
require_once('connect_db.php');

function write_watched_review($watched_date, $category, $name, $review)
{
  $table_name = "category_table";
  $sql_query = "INSERT INTO $table_name VALUES ('$watched_date', '$category', '$name', '$review')";

  $sql_res = mysqli_query(connect_db(), $sql_query);

  if ($sql_res) {
    refresh_auto_indrement_num();
  }
}
?>