Animated Turtle

Query

PHP, 게시판 이용하기

훙구 2023. 4. 25. 23:04

...

728x90
반응형

PHP를 이용하여 게시판과 필요한 기능들 만들기

게시판

게시판 예시

PHP  작성하기

<?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>";
        }
    }
?>

PHP 정리해보기

  • $sql에 board 테이블과 member 테이블을 합쳐 boardID, boardTitle, youName, regTime, boardView에 대한 정보를 가져오는 쿼리문을 저장합니다.
  • num_rows를 사용하여 가져온 데이터의 개수를 $count에 저장합니다.
  • $count의 개수만큼 for문을 반복시켜 데이터를 html문서상의 테이블에 출력합니다.

게시글 보기

게시글 보기 예시

PHP 작성하기

<?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>";
    }
?>

<div class="board__btn">
    <a href="boardModify.php?boardID=<?=$_GET['boardID'] ?>" class="btnStyle3">수정하기</a>
    <a href="boardRemove.php?boardID=<?=$_GET['boardID'] ?>" class="btnStyle3" onclick="return confirm('정말 삭제하시겠습니까?', '')">삭제하기</a>
    <a href="board.php" class="btnStyle3">목록보기</a>
</div>

PHP 정리해보기

  • isset() 함수는 변수가 설정되어 있는지 아닌지를 판별합니다.
  • isset()를 이용하여 $_GET['board']가 사용 가능한지를 판별하고 사용 가능하다면 $sql에 저장되어 있는 쿼리문을 통해 가져온 데이터들을 html문서상의 테이블에 출력합니다.
  • $_GET['boardID']가 사용 불가능한 상태라면 존재하지 않는 게시물임을 적어줍니다.

게시글 작성

게시글 작성 예시

PHP 작성하기

<?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>

PHP 정리해보기

  • POST 방식으로 boardTitle, boardContents, boardView, regTime, memberID를 가져와 각각의 변수에 저장합니다.
  • 각각의 VALUES 데이터를 등록하는 쿼리문을 $sql에 저장하고 전송합니다.
  • 스크립트를 통해 board.php로 주소를 이동합니다.

게시글 수정

게시글 수정 예시

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>";
    }
?>

PHP 정리해보기

  • GET방식으로 boardID 데이터를 가져와 저장합니다.
  • 해당 boardID와 일치하는 boardID의 데이터(boardID, boardTitle, boardContents)를 불러오는 쿼리문을 $sql에 저장하고 전송합니다.
  • $info에 가져온 데이터를 배열 형식으로 저장하고, html문서상의 input박스에 출력합니다.
<?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);
    $memberID = $_SESSION['memberID'];

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

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

PHP 정리해보기

  • POST방식으로 수정한 내용들을 받아와 저장합니다.
  • board 테이블에 있는 데이터중 받아온 boardID와 같은 boardID를 가진 데이터의 각각의 내용을 새로 받아온 내용으로 변경하는 쿼리문을 $sql에 저장하고 전송합니다.
  • 스크립트를 사용해 board.php로 주소를 이동합니다.

 

게시글 삭제

게시글 삭제 예시

PHP 작성하기

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

    $boardID = $_GET['boardID'];
    $boardID = $connect -> real_escape_string($boardID);

    $sql = "DELETE FROM board WHERE boardID = {$boardID}";
    $connect -> query($sql);
?>

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

PHP 정리해보기

  • GET방식으로 boardID를 가져와 저장합니다.
  • 가져온 boardID와 같은 boardID를 가진 데이터를 board테이블에서 삭제하는 쿼리문을 $sql에 저장하고 전송합니다.
  • 스크립트를 사용해 board.php로 주소를 이동합니다.

 

728x90
반응형