Blinking Hello Kitty Angel

MySQL

PHP로 게시판 사이트 만들기

xoouxa 2023. 4. 25. 21:35

“ 지연되는 프로젝트에 인력을 더 투입하면 오히려 더 늦어진다. ”

- Frederick Philips Brooks
Mythical Man-Month 저자
728x90

안녕하세요 ヾ(≧▽≦*)o 오늘은 mysql을 이용해 php 작업으로 게시판 사이트를 만들어 보도록 하겠습니다.

제가 중요하다고 생각하는 부분만 설명드리도록 하겠습니다.

board 파일을 따로 만들어서 여러 경우의 수를 전부 작업해 주도록 하겠습니다 😏

mamp를 켜신 상태에서 작업해 주셔야 사이트가 열립니다 !

게시판

게시판 글 수정 - 수정본 저장

게시판 글 삭제 

(검색은 아직 작업하지 않았습니다.)

게시글 보기

게시글 작성

작성글 저장 순입니다.

 

 

1️⃣ 메인 게시판

💛 완성화면 입니다.

<?php
    $sql = "SELECT b.boardID, b.boardTitle, m.youName, b.regTime, b.boardView FROM BOARD B join members m ON(b.memberID = m.memberID) ORDER BY boardID DESC LIMIT 10";
    $result = $connect -> query($sql);

    if($result) {
        $count = $result -> num_rows;

        if($count > 0){
            for($i=0; $i<$count; $i++){
                $info = $result -> fetch_array(MYSQLI_ASSOC);

                echo "<tr>";
                echo "<td>".$info['boardID']."</td>";
                echo "<td><a href='boardView.php?boardID={$info['boardID']}'>".$info['boardTitle']."</a></td>";
                echo "<td>".$info['youName']."</td>";
                echo "<td>".date('Y-m-d', $info['regTime'])."</td>";
                echo "<td>".$info['boardView']."</td>";
                echo "</tr>";
            }
        } else {
            echo "<tr><td colspan='4'>게시글이 없습니다.</td></tr>";
        }
    }
?>
                </tbody>
                </table>
            </div>
            <div class="board__pages">
                <ul>
                    <li><a href="#">처음으로</a></li>
                    <li><a href="#">이전</a></li>
                    <li class="active"><a href="#">1</a></li>
                    <li><a href="active">2</a></li>
                    <li><a href="active">3</a></li>
                    <li><a href="active">4</a></li>
                    <li><a href="active">5</a></li>
                    <li><a href="active">6</a></li>
                    <li><a href="active">7</a></li>
                    <li><a href="active">다음</a></li>
                    <li><a href="active">마지막</a></li>
                </ul>
            </div>
        </div>
    </main>
    <!-- //main -->

게시판을 만들기 위한 php 코드입니다.

변수 sql로 데이터베이스에서 게시글 정보를 가져오기 위한 SQL문을 작성하고 , 변수 result로 해당 SQL문을 실행해 결과로 가져옵니다.

만약 실행한 결과가 TRUE면 가져온 결과에 대해 데이터의 갯수를 카운트해 카운트 값이 0보다 크면 for문을 이용해 변수 info로 변수 result의 값을 배열로 가져와 각각의 데이터에 대해 게시글 목록을 출력합니다.

만약 실행한 결과가 false면 게시글이 없다는 텍스트를 가져옵니다,

 

2️⃣ 작성한 게시글 수정입니다.

<?php
    $memberID = $_SESSION['memberID'];
    $boardID = $_GET['boardID'];

    $sql = "SELECT boardID, boardTitle, boardContents FROM board WHERE boardID = {$boardID} AND memberID = {$memberID}";
    $result = $connect -> query($sql);

    if($result && $result -> num_rows > 0){
        $info = $result -> fetch_array(MYSQLI_ASSOC);

        echo "<div style='display:none'><label for='boardID'>번호</label><input type='text' id='boardID' name='boardID' class='inputStyle' value='".$info['boardID']."'></div>";
        echo "<div><label for='boardTitle'>제목</label><input type='text' id='boardTitle' name='boardTitle' class='inputStyle' value='".$info['boardTitle']."'></div>";
        echo "<div><label for='boardContents'>내용</label><textarea name='boardContents' id='boardContents' rows='20' class='inputStyle'>".$info['boardContents']."</textarea></div>";
        echo "<button type='submit' class='btnStyle3'>수정하기</button>";
    } else {
        echo "<tr><td colspan='4'>작성자만 수정할 수 있습니다.</td></tr>";
    }
?>

변수 memberID로 세션을 가져오는 memberID를 저장해주고 변수 borderID로 GET 방식으로 가져온 boardID를 저장해줍니다.

변수sql로 수정할 게시글의 정보를 가져오는 SQL문을 저장합니다.

변수 result로 SQL문을 실행해 결과를 가져옵니다.

if문을 사용해 변수 result로 실행한 결과가 true일 경우와 변수 result로 실행한 결과의 열이 0보다 클 때 실행시키게끔 해줍니다.

변수 info로 변수 result의 값을 배열로 가져와 각각의 데이터에 대해 게시글 목록을 출력합니다.

만약, 실행 결과가 false면 작성자만 수정할 수 있습니다.라는 창을 띄워줍니다.

 

3️⃣ 수정본 저장

<?php
    include "../connect/connect.php";
    include "../connect/session.php";

    $boardID = $_POST['boardID'];
    $boardTitle = $_POST['boardTitle'];
    $boardContents = $_POST['boardContents'];

    $boardTitle = $connect -> real_escape_string($boardTitle);
    $boardContents = $connect -> real_escape_string($boardContents);

    $sql = "UPDATE board SET boardTitle = '{$boardTitle}', boardContents = '{$boardContents}' WHERE boardID = '{$boardID}'";
    $connect -> query($sql);

?>

<script>
    location.href = "board.php";
</script>

 

4️⃣ 게시판 글 삭제 

<?php
    $boardID = $_GET['boardID'];

    // echo $boardID;
    $sql = "SELECT b.boardContents, b.boardTitle, m.youName, b.regTime, b.boardView FROM board b JOIN members m ON(m.memberID = b.memberID) WHERE b.boardID = {$boardID}";
    $result = $connect -> query($sql);

    if($result) {
        $info = $result -> fetch_array(MYSQLI_ASSOC);

        echo"<tr><th>제목</th><td>".$info['boardTitle']."</td></tr>";
        echo"<tr><th>등록자</th><td>".$info['youName']."</td></tr>";
        echo"<tr><th>등록일</th><td>".date('Y-m-d', $info['regTime'])."</td></tr>";
        echo"<tr><th>조회수</th><td>".$info['boardView']."</td></tr>";
        echo"<tr><th>조회수</th><td>".$info['boardContents']."</td></tr>";
    } else {
        echo "<tr><td colspan='4'>게시글이 없습니다.</td></tr>";
    }
?>

                    </tbody>
                </table>
            </div>
            <div class="border__btn mb100">
                <a href="boardModify.php?boardID=<?=$_GET['boardID'] ?>" class="btnStyle3">수정하기</a>
                <a href="boardRemove.php?boardID=<?=$_GET['boardID'] ?>" class="btnStyle3" onclick="confirm('삭제하시겠습니까 ?', '')">삭제하기</a>
                <a href="board.php" class="btnStyle3">목록보기</a>
            </div>
        </div>2
        
    </main>
    <!-- //main -->

게시판 청에서 게시글을 클릭했을 때 클릭한 게시글의 내용을 가져오는 코드입니다.

boardID 값에 맞는 데이터를 가져오는 법입니다.

만약 boardID 값이 없다면 게시글이 없다는 문구를 띄워줍니다.

 

게시글 삭제를 눌렀을 때 정말 삭제할 것인지 확인 문구창을 띄운 뒤 삭제하기 버튼을 눌러야 삭제가 완료될 수 있도록 작업해 주었습니다.

onclick = "retuen confirm('삭제하시겠습니까 ?')

onclick을 사용했고 return은 취소를 눌렀을 땐 삭제가 되지 않도록 설정해 주고, 예를 누르면 삭제가 되도록 만들어줍니다.

 

5️⃣ 게시글 보기

(X)

 

6️⃣ 게시글 작성

<main id="main" class="container">
        <div class="intro__inner center bmStyle center">
            <picture class="intro__images small">
                <source srcset="../assets/img/board.jpg, ../assets/img/board.jpg, ../assets/img/board.jpg" />
                <img src="../assets/img/board.jpg" alt="회원가입 이미지">
            </picture>
            <h2>게시글 작성하기</h2>
            <p class="intro__text">
                프론트앤드 개발자를 위한 게시판 입니다.<br>
                관련 된 문의사항은 여기서 확인하세요 😊
            </p>
        </div>
        <div class="board__inner">
            <div class="board__write">
                <form action="boardWriteSave.php" name="boardWriteSave" method="post">
                    <fieldset>
                        <legend class="blind">게시글 작성하기</legend>
                        <div>
                            <label for="">제목</label>
                            <input type="text" id="boardTitle" name="boardTitle" class="inputStyle">
                        </div>
                        <div>
                            <label for="boardContents">내용</label>
                            <textarea name="boardContents" id="boardContents" rows="20" class="inputStyle"></textarea>
                        </div>
                        <button type="submit" class="btnStyle3">저장하기</button>
                    </fieldset>
                </form>
            </div>
        </div>
    </main>
    <!-- //main -->

 

 

7️⃣ 작성글 저장

<?php
    include "../connect/connect.php";
    include "../connect/session.php";

    $boardTitle = $_POST['boardTitle'];
    $boardContents = $_POST['boardContents'];
    $boardView = 1;
    $regTime = time();
    $memberID = $_SESSION['memberID'];

    $boardTitle = $connect -> real_escape_string($boardTitle);
    $boardContents = $connect -> real_escape_string($boardContents);

    $sql = "INSERT INTO board(memberID, boardTitle, boardContents, boardView, regTime) VALUES('$memberID', '$boardTitle', '$boardContents', '$boardView', '$regTime')";
    $connect -> query($sql);

?>

<script>
    location.href = "board.php";
</script>

'MySQL' 카테고리의 다른 글

PHP로 게시판 사이트 만들기 2  (13) 2023.04.26
MySQL 사용법 함께 알아봐요  (25) 2023.03.13