백엔드 개발/PHP

[PHP]PHP를 이용한 게시판구현

독학하는 정호빈 2022. 2. 14. 10:17

안녕하세요. 코딩을 독학하고 있는 정호빈입니다.

지금까지 로그인과 정보수정에 대해서 다루어보았는데요 이전 내용이 궁금하신 분들은 다음 링크를 참조해주시기 바랍니다.

https://seongjangjhb.tistory.com/33?category=1248813

 

[PHP]PHP를 이용한 정보수정

안녕하세요. 코딩을 독학하고있는 정호빈입니다. 이전에 로그인환경을 구현해보았는데요 이어서 로그인이 완료되면 정보를 수정할 수 있다면 좋을 것 입니다. 그래서 정보수정과정을 추가로

seongjangjhb.tistory.com

 

이번에는 게시판을 구현해보았는데요 운영자가 관리하는 공지게시판을 구현해보았습니다. 글쓰기는 운영자만이 할 수 있습니다. 목록번호, 제목, 시간을 표시하고 있는 게시글이 실리도록 만들었습니다.

 

 

 

 

 

우선 게시판이 어떻게 구현됐는지 확인해보도록 하겠습니다.

 

지금 보이는 게시글들은 미리 작성해두었던 테스트용 공지입니다. 번호 제목 날짜가 잘 뜨는것을 볼 수 있습니다. 그럼 코드를 살펴보며 설명하도록 하겠습니다.

 

 

 

board.php입니다.

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>공지게시판</title>
    <link rel="stylesheet" href="model2.css">

</head>

<body>
    <?php
    $conn = mysqli_connect('', '', '', '', '');
    $qry = "SELECT * FROM boardtest";
    if ($result = mysqli_query($conn, $qry)) { ?>
        <h1 class="title">공지게시판</h1>
        <div class="container">
            <div class="main_board">
                <table>
                    <tr>
                        <th>
                            번호
                        </th>
                        <th>
                            제목
                        </th>
                        <th>
                            날짜
                        </th>
                    </tr>
                    <?php
                    while ($row = mysqli_fetch_assoc($result)) { ?>
                        <tr>
                            <th>
                                <?= $row['id']; ?>
                            </th>
                            <th>
                                <a href="board2.php?id=<?= $row['id'] ?>">
                                    <?= $row['title']; ?></a>
                            </th>
                            <th>
                                <?= $row['date']; ?>
                            </th>
                        </tr>
                    <?php }
                    ?>
                </table>
                <p>
                    <a href="wboard.php"><span class="a4">글쓰기</span></a>
                </p>
            </div>
            <div class="navbar">
                <div class="navbar2">
                    <h3>메뉴</h3>
                    <a href="index.php"><span class="a1">홈</span></a> <br><br>
                    <a href="board.php"><span class="a1">게시판</span></a>
                </div>
            </div>
        </div>
    <?php } ?>

</body>

</html>

테이블을 이용해서 규칙성 있게 게시글들을 배열하도록 하였습니다. 글 제목에는 해당 목록번호를 이용하여 그 게시글의 내용을 불러들일 수 있도록 링크에 GET방식으로 id값을 넘겨주었습니다. 그럼 이어서 해당 게시글을 클릭하면 어떻게 처리가 이루어지는 살펴보겠습니다.

 

 

 

공지사항 게시글을 클릭했습니다.

 

새로운 공지사항 게시글을 클릭했습니다.

 

클릭한 게시글에 맞게 내용이 출력되는 것을 볼 수 있습니다. 해당 과정을 코드로 살펴보겠습니다.

 

 

 

board2.php입니다.

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <link rel="stylesheet" href="model2.css">
    </head>
    <body>
        <?php 
        $id = $_GET['id'];
        $conn = mysqli_connect('', '', '', '','');
        $qry = "SELECT * FROM boardtest WHERE id={$id};";
        if($result = mysqli_query($conn, $qry)){
            $row = mysqli_fetch_assoc($result);
            ?>
            <h1 class="title" ><?= $row['title'] ?></h1>
            <div class="container">
                <div class="main_board">
                    <h4>내용</h4>
                    <?= $row['content']?> <br><br>
                    <p>
                        <a href="board.php"><span class="a4">목록으로</span></a>
                    </p>
                </div>
                <div class="navbar">
                    <div class="navbar2">
                        <h3>메뉴</h3>
                        <a href="index.php"><span class="a1">홈</span></a> <br><br>
                        <a href="board.php"><span class="a1">게시판</span></a>
                    </div>
            </div>
            </div>
        <?php }
        ?>
    </body>
</html>

넘어온 id값을 get방식으로 받아 온 다음 해당 id값을 이용하여 데이터베이스에 요청해 내용을 불러와 보여주도록 구현했습니다. 이제 작성된 글들을 살펴보았는데요 글을 어떤 식을 작성하는지도 알아보겠습니다.

 

 

 

wboard.php입니다.

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <link rel="stylesheet" href="model2.css">
</head>

<body>
    <?php
    if ($_COOKIE['userid'] == "") { ?>
    <h1 class="title">게시글작성</h1>
    <div class="main_wboard">
        <form action="wboard2.php" method="POST">
            제목 :<input class="input1" type="text" name="title"><br>
            내용 :<textarea class="input1" name="content" cols=85 rows=15></textarea><br>
            <input type="submit" style='cursor:pointer' class="a4" value="작성">
        </form>
        <p>
            <a href="board.php"><span class="a4">목록으로</span></a>
        </p>
    </div>
    <?php } else { ?>
            <script>
                alert("권한이 없습니다.");
                location.replace("board.php");
            </script>
    <?php } ?>
</body>

</html>

 

글쓰기 버튼을 누르면 마스터 아이디가 아니면 해당 글쓰기를 실행할 수 없도록 구현했습니다. 그러면 제목은 글쓰기테스트 내용은 글쓰기 테스트입니다.로 게시글을 작성해보도록 하겠습니다.

 

글이 잘 작성된 것을 알 수 있겠습니다. 해당 작성되는 과정을 코드로 살펴보겠습니다.

 

 

wboard2.php입니다.

<?php
    $conn = mysqli_connect('','','','','');
    $title = $_POST['title'];
    $content = $_POST['content'];
    date_default_timezone_set('Asia/Seoul');
    $date = date('Y-m-d H:i:s');

    $qry = "INSERT INTO boardtest (id, title, content, date)
            VALUES(null,'$title','$content','$date')";
    $result = mysqli_query($conn, $qry);
    if($result){
        echo "<script>alert('글이 작성되었습니다.')</script>";
        echo "<script>location.replace('board.php')</script>";
    }
    else{
        echo "<script>alert('오류입니다.')</script>";
        echo "<script>location.replace('board.php')</script>";
    }
?>

우선 작성된 값들을 변수로 받아준다음 초기 설정이 서울로 돼있지 않을 수 있으므로 시간대 설정을 서울로 맞추어 줍니다. 그리고 date변수에 삽입해주고 해당 변수들을 삽입하는 과정을 거치면 되겠습니다.

 

 

 

 

 

 

이상으로 PHP를 이용해서 게시판을 구현하는 단계였습니다. 다음 내용은 PHP와는 조금 다른 내용으로 게임과 어떠 한식으로 연동을 거치며 어떠한 기법들을 사용했는지 세부적인 기능들을 설명해보려고 합니다.

감사합니다.