본문 바로가기
프로젝트/php 미니 프로젝트

[php] 게시판을 만들고 댓글 기능까지 구현해보자

by 꽁이꽁설꽁돌 2024. 5. 16.
728x90
반응형

목차

     

    완성된 모습

    이런식으로 todolist를 작성할 시 게시판이 생기게 된다.

     

     

    이런식으로 다른 이의 todolist가 나오고 댓글을 작성할 수 있다.

     

     

    데이터 구조

     

     

    userchattable(채팅 관리 데이터 베이스)

    SID unique key
    User_page_id varchar
    Login_chat_id varchar
    Chat_message varchar
    Chat_date DATETIME

     

    userboardtable(게시판 관리 데이터 베이스)

    SID unque key
    Login_board_id varchar
    Create_board_date DATETIME
    Board_chat integer
    Board_thumb ineger
    Board_view integer

     

    아이디를 통해 연관된 데이터를 저장하고 데이터에 접근하였다.

     

    게시판 테이블 코드 구현 

     <table class="list-table">
                <thead>
                    <tr>
                        <th width="70">번호</th>
                        <th width="110">카테고리</th>
                        <th width="120">글쓴이</th>
                        <th width="500">작성일</th>
                        <th width="100">추천수</th>
                        <th width="100">조회수</th>
                    </tr>
                </thead>
                <tbody>
                    <?php
            // 데이터베이스에서 가져온 각각의 레코드에 대해 반복하여 출력
            $db = mysqli_connect('localhost', 'root', '', 'userdata') or die('Unable to connect. Check your connection parameters.');
            $sql = mysqli_query($db, "SELECT * FROM userboardtable ORDER BY SID DESC LIMIT 0,10");
            $num =1;
            while ($board = mysqli_fetch_assoc($sql)) {
                ?>
                    <tr>
                        <td width="70"><?php echo $num ?></td>
                        <td width="110">
                            <?php echo "<a href='TodoView.php?Login_id={$_SESSION['Login_id']}&Login_board_id={$board['Login_board_id']}'/>"?><?php echo $board['Board_category']; ?>
                        </td>
                        <td width="120"><?php echo $board['Login_board_id']; ?></td>
                        <td width="500"><?php echo $board['Create_board_date']; ?></td>
                        <td width="100"><?php echo $board['Board_thumb']; ?></td>
                        <td width="100"><?php echo $board['Board_view']; ?></td>
                    </tr>
                    <?php
                    $num++;
            }
            ?>
                </tbody>
            </table>

     

    링크를 걸어 그 투두리스트 뷰 사이트로 이동할 수 있게한다.

     

    댓글 테이블 코드 구현

    <?php
    
    session_start(); 
    $db = mysqli_connect('localhost', 'root', '', 'userdata') or die('Unable to connect. Check your connection parameters.');
    
    if(isset($_POST['submit'])){
        $category = 'To-do';
        $pageid = $_GET['Login_board_id'];  //게시글 아이디
        $id = $_SESSION['Login_id'];  //로그인한 아이디
        $chat = $_POST['comment'];
        $time = date("Y-m-d H:i:s");
        $query = "INSERT INTO userchattable (User_page_id, Login_chat_id, Login_chat_category, Chat_message, Chat_date) VALUES ( '$pageid', '$id','$category', '$chat', '$time')";
        mysqli_query($db, $query) or die(mysqli_error($db));
        header("Location: TodoView.php?Login_board_id={$_GET['Login_board_id']}");
        exit;
    }
    ?>
    
    
      <div>
                <?php
              $User_page_id = $_GET['Login_board_id']; // 게시글 아이디
              $login_chat_category = 'To-do'; //  게시글의 카테고리
              
              $query = "SELECT * FROM userchattable WHERE User_page_id='$User_page_id' AND Login_chat_category='$login_chat_category'";  
              //카테고리와 게시글 아이디가 일치하는 데이터만
              $result = mysqli_query($db, $query);
                while ($row = mysqli_fetch_assoc($result)) {
                  
                    echo "<div class='chat-title'><div>{$row['Login_chat_id']}</div>";
                    echo "<div>{$row['Chat_date']}</div></div>";
                    echo "<div class='chat-wrap'>";
                    echo "<div>{$row['Chat_message']}</div>";
                    echo "</div>";
                }
                ?>
            </div>
            <div class="form-wrap">
                <button class="comment-button" onclick="toggleForm()">댓글 쓰기</button>
    
                <div class="comment-form">
                    <form id="commentForm" method="post" action="">
                        <textarea name="comment" placeholder="댓글을 입력하세요"></textarea>
                        <button class="addBtn" name="submit" type="submit">등록</button>
                    </form>
                </div>
            </div>
        </div>

     

    댓글을 쓰면 데이터에 추가가 되고 그 댓글 데이터에 접근해서 데이터를 가져오는 코드이다.

     

    반응형