본문 바로가기
PHP

PHP 게시글 보기, 게시판 수정하기 페이지

by dongjin6539 2023. 4. 25.
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 100";
    $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>";
        }
    }
?>

작성 방법

  • 변수 sql로 데이터베이스에서 게시글 정보를 가져오기 위한 SQL문을 작성하고, 변수 result로 해당 SQL문을 실행하여 결과를 가져옵니다.
  • 만약에 실행한 결과가 true면 가져온 결과에 대해 데이터의 개수를 카운트하여, 카운트 값이 0보다 크면 for문을 이용하여 변수 info로 변수 result의 값을 배열로 가져와서 각각의 데이터에 대해 게시글 목록을 출력합니다.
  • 만약에 실행한 결과가 false면 "게시글이 없습니다."라는 텍스트를 가져옵니다.

 

 

게시글 보기 PHP 
<?php
    if(isset($_GET['boardID'])) {
        $boardID = $_GET['boardID'];
    
        $sql = "SELECT b.boardContents, b.boardTitle, b.memberID, 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>";
    }
?>

작성 방법

  • if문으로 GET방식으로 전달된 boardID 값이 있으면 해당 boardID에 해당하는 게시글을 데이터베이스에서 가져오게끔 합니다.
  • 다음 변수 boardID에 GET방식으로 가져온 boardID 값을 저장하고 해당 boardID의 게시글 정보를 가져오기 위해 SQL문을 작성하는데 JOIN을 통해 members 테이블에서 등록자 정보를 가져와서 같이 출력해줍니다.
  • 변수 result로 작성한 SQL문을 실행하고 if문을 사용해서 실행한 결과가 true이면 변수 info로 변수 result의 값을 배열로 가져와서 각각의 데이터에 대해 게시글 목록을 출력합니다.
  • 만약에 실행한 결과가 false면 "게시글이 없습니다."라는 텍스트를 가져옵니다.

 

추가 코드(게시글 작성자와 로그인한 멤버가 다르면 수정하기와 삭제하기 버튼 삭제), 삭제하기 버튼을 클릭했을 때 확인과 취소 버튼의 결과가 서로 다르게 하기
<?php if(isset($_GET['boardID']) && $info['memberID'] == $_SESSION['memberID']): ?>
    <a href="boardModify.php?boardID=<?=$_GET['boardID'] ?>" class="btnStyle3">수정하기</a>
    <a href="boardRemove.php?boardID=<?=$_GET['boardID'] ?>" class="btnStyle3" onclick="if(!confirm('정말 삭제하시겠습니까?', '')) { return false; }">삭제하기</a>
<?php endif; ?>

작성 방법

  • if문으로 GET방식으로 전달된 boardID 값이 있고 위에 변수 info에서 가져온 memberID와 session에서 로그인한 memberID의 값이 true이면 아래의 링크를 출력시켜주게 합니다.
  • a 링크의 각각의 href 페이지에 게시글 번호인 boardID를 전달해줍니다.
  • 삭제하기에서는 onclick를 사용해서 if문으로 confirm으로 창을 뛰어주고 확인 창을 누르면 borardRemove.php(https://github.com/dongjin6539/web2023-PHP/blob/master/board/boardRemove.php)를 통해서 게시판 창으로 이동하게 해주고 취소 창을 누르면 false를 반환하게 해서 실행이 되지 않게 해줍니다.

 

 

게시글 수정하기 PHP
<?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를 저장해주고 변수 boardID로 GET 방식으로 가져온 boardID를 저장해줍니다.
  • 변수 sql로 수정할 게시글의 정보를 가져오는 SQL문을 저장합니다.
  • 변수 result로 SQL문을 실행하여 결과를 가져옵니다.
  • if문을 사용해서 변수 result로 실행한 결과가 true일 경우와 변수 result로 실행한 결과의 열이 0보다 클 때 실행시키게끔 해줍니다.
  • 변수 info로 변수 result의 값을 배열로 가져와서 각각의 데이터에 대해 게시글 목록을 출력합니다.
  • 만약에 실행한 결과가 false면 "작성자만 수정할 수 있습니다."라는 텍스트를 가져옵니다.

 

728x90
반응형