Fast Blinking Hello Kitty

PHP

php 게시판 만들기

코른이되고싶은코린이 2023. 4. 25. 23:59

728x90

php 게시판 만들기

php게시판 코드블럭

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

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>게시판</title>

    <?php include "../include/head.php" ?>
</head>
<body class="gray">
    <?php include "../include/skip.php" ?>
    <!-- skip -->

    <?php include "../include/header.php" ?>
    <!-- include -->

    <main id="main" class="container">
        <div class="intro__inner center bmStyle">
            <picture class="board__images">
                <source srcset="../assets/img/board01.jpg, ../assets/img/board01@2x.jpg 2x, ../assets/img/board01@3x.jpg 3x" />
                <img src="../assets/img/board01.jpg" alt="소개이미지">
            </picture>
            <h2>게시판</h2>
            <p class="intro__text">
                웹디자이너, 웹퍼블리셔, 프론트엔드 개발자를 위한 게시판입니다.
                관련된 문의사항은 여기서 확인하세요.
            </p>
        </div>
        <!-- intro__inner -->

        <div class="board__inner">
            <div class="board__search">
                <div class="left">
                    *총 <em>1111</em> 건의 게시물이 등록되어 있습니다.
                </div>
                <div class="right">
                    <form action="#" name="#" method="post">
                        <fieldset>
                            <legend class="blind">게시판 검색 영역</legend>
                            <input type="search" placeholder="검색어를 입력하세요!">
                            <select name="#" id="#">
                                <option value="title">제목</option>
                                <option value="content">내용</option>
                                <option value="name">등록자</option>
                            </select>
                            <button type="submit" class="btnStyle3 white">검색</button>
                            <a href="boardWrite.php" class="btnStyle3">글쓰기</a>
                        </fieldset>
                    </form>
                </div>
            </div>
            <div class="board__table">
                <table>
                    <colgroup>
                        <col style="width: 5%;">
                        <col>
                        <col style="width: 10%;">
                        <col style="width: 15%;">
                        <col style="width: 7%;">
                    </colgroup>
                    <thead>
                        <tr>
                            <th>번호</th>
                            <th>제목</th>
                            <th>등록자</th>
                            <th>등록일</th>
                            <th>조회수</th>
                        </tr>
                    </thead>
                    <tbody>
                        <!-- <tr>
                            <td>1</td>
                            <td><a href="boardView.html">게시판 제목이 들어가는 부분입니다.</a></td>
                            <td>이은지</td>
                            <td>23.02.02</td>
                            <td>227</td>
                        </tr> -->
<?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>
    </main>
    <!-- main -->

    <?php include "../include/footer.php" ?>
    <!-- footer -->

</body>
</html>

보충설명

✨PHP와 HTML을 사용하여 만든 게시판 페이지입니다.

 

<include "../connect/connect.php"; include "../connect/session.php";> 를 이용하여 서버와 데이터 베이스를 연결하였습니다.

 

<?phpinclude"../include/head.php"?>는 공통적으로 사용되는 부분을 모듈화한 파일을 불러오는 코드입니다.

 

<?php include "../include/skip.php" ?>는 웹 접근성을 고려하여, 스킵 내비게이션을 사용할 수 있도록 하는 코드입니다.

 

<?php include "../include/header.php" ?>는 페이지 상단에 위치하는 헤더를 불러오는 코드입니다.

 

$sql = 와 $result = 는 게시판에 등록된 게시글을 데이터베이스에서 가져오기 위한 코드입니다.

 

가져온 데이터를 for 문을 사용하여 반복하면서 테이블의 각 셀에 출력합니다.

 

PHP에서 echo는 출력 함수입니다. echo 함수는 괄호 안에 입력된 값을 출력합니다. 또한, echo 함수는 문자열 뿐만 아니라 변수, 배열 등 다양한 데이터 타입을 출력할 수 있습니다.

게시판 보기

<?php
    if (isset($_GET['boardID'])) {
        $boardID = $_GET['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>";
            echo "<tr><th>등록자</th><td>" . $info['youName'] . "</td>";
            echo "<tr><th>등록일</th><td>" . date('Y. m. d', $info['regTime']) . "</td>";
            echo "<tr><th>조회수</th><td>" . $info['boardView'] . "</td>";
            echo "<tr><th>내용</th><td>" . $info['boardContents'] . "</td>";
        } else {
            echo "<tr><td colspan='4'>존재하지 않은 게시물입니다.</td></tr>";
        }
    } else {
        echo "<tr><td colspan='4'>존재하지 않는 게시물입니다.</td></tr>";
    }
?>

보충설명

이 코드는 GET 방식으로 전달된 boardID를 이용하여 게시판의 글 내용을 출력하는 코드입니다.

 

코드의 구조를 보면, 먼저 isset() 함수를 사용하여 $_GET['boardID'] 값이 존재하는지 확인합니다. 존재한다면, $boardID 변수에 이 값을 저장하고, 이후 SQL 쿼리를 생성하여 $connect 객체를 이용하여 실행합니다.

 

만약 $result 객체가 존재한다면, mysqli_fetch_array() 함수를 사용하여 $result에서 데이터를 가져와 $info 배열에 저장합니다.

 

echo를 사용하여 HTML 테이블의 각 셀에 해당하는 부분에 $info 배열의 값을 출력합니다.

 

만약 $result 객체가 존재하지 않는다면, 해당 게시물이 존재하지 않는다는 메시지를 출력합니다.

 

또한, GET 방식으로 전달된 boardID 값이 존재하지 않는다면, 해당 게시물이 존재하지 않는다는 메시지를 출력합니다.

 

PHP에서 GET 방식은 HTTP 요청을 통해 데이터를 서버로 전송하는 방법 중 하나입니다. GET 방식은 URL에 데이터를 포함시켜 요청하는 방식으로, 데이터는 URL의 끝에 '?'를 입력한 뒤에 변수명과 값 쌍으로 이어붙이는 방식으로 전달됩니다. 예를 들어, http://example.com/?name=john&age=25 와 같은 URL에서는 'name'이라는 변수에 'john'이라는 값이, 'age'라는 변수에 '25'라는 값이 전달되는 것입니다. 이렇게 전달된 데이터는 PHP에서 $_GET 변수를 통해 접근할 수 있습니다.

예를 들어, 위에서 전달된 'name' 변수의 값에 접근하려면 $_GET['name']이라는 방식으로 접근하면 됩니다. 이렇게 GET 방식으로 전달된 데이터를 이용하여 PHP 스크립트에서 원하는 처리를 수행할 수 있습니다.

게시판 수정하기

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

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

    if($result){
        $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>";
    }
?>

보충설명

게시물의 정보를 가져와서 해당 게시물의 제목과 내용을 입력할 수 있는 폼을 출력하는 코드입니다.

 

먼저, $boardID 변수에 GET 방식으로 전달된 게시물 ID 값을 저장합니다. 이후, $sql 변수에는 $boardID를 이용하여 해당 게시물의 정보를 데이터베이스에서 조회하는 SQL 쿼리문이 저장됩니다. 이 쿼리문은 board 테이블에서 $boardID와 일치하는 게시물의 boardID, boardTitle, boardContents 값을 가져오는 것입니다.

 

$result 변수에는 위에서 작성한 $sql 쿼리문을 실행한 결과를 저장하고, if 조건문을 사용하여 $result가 true일 경우, $info 변수에는 $result의 fetch_array 함수를 사용하여 조회한 게시물 정보가 배열 형태로 저장됩니다.

 

echo 함수를 사용하여 HTML 코드를 출력합니다. 이 코드는 $info 배열에 저장된 boardID, boardTitle, boardContents 값을 이용하여 폼을 출력하는 것입니다. 각각의 값은 input 또는 textarea 태그에 value 속성을 이용하여 삽입되며, 숨겨진 input 태그를 사용하여 boardID 값을 전달합니다.