MYSQL/php

php로 홈페이지 만들기_게시판 만들기

아라라_ 2023. 4. 25. 20:30

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

Frederick Philips Brooks
Mythical Man-Month 저자
728x90

오늘은 제가 한 미션을 정리하여 올리려고 합니다.

 

1. boardVeiw.php을 바로 들어갈때 생기는 오류 수정

<?php
if(isset($_GET['boardID'])) {
    $boardID = $_GET['boardID'];

    // echo $boardID;
    $sql = "SELECT b.memberID, 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){
        
        $count = $result ->num_rows;

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

                echo "<tr>";
                echo "<th>제목</th>";
                echo "<td>".$info['boardTitle']."</td>";
                echo "</tr>";

                echo "<tr>";
                echo "<th>등록자</th>";
                echo "<td>".$info['youName']."</td>";
                echo "</tr>";

                echo "<tr>";
                echo "<th>등록일</th>";
                echo "<td>".date('Y-m-d', $info['regTime'])."</td>";
                echo "</tr>";

                echo "<tr>";
                echo "<th>조회수</th>";
                echo "<td>".$info['boardView']."</td>";
                echo "</tr>";

                echo "<tr>";
                echo "<th>내용</th>";
                echo "<td>".$info['boardContents']."</td>";
                echo "</tr>";
            };
        }else {
        echo "<tr><td colspan='4'>게시글이 없습니다.</td></tr>";
    }
    } else {
        echo "<tr><td colspan='4'>게시글이 없습니다.</td></tr>";
    }
} else {
    echo "<tr><td colspan='4'>게시글이 없습니다.</td></tr>";
}
?>

boardVeiw.php을 바로 들어갈때 생기는 오류 수정를 잡아내는 것이 첫번째 미션이였습니다. 

이는 짧아 구문을 전부 설명하는 것으로 대체하겠습니다.

 

  • if(isset($_GET['boardID'])) 구문은 URL 매개변수 boardID가 설정되어 있는지 확인하는 구문입니다. 설정되어 있을 경우, 해당 게시글의 정보를 가져와 출력합니다.
  • $boardID = $_GET['boardID']; 구문은 URL 매개변수 boardID의 값을 변수 $boardID에 저장합니다.
  • 그 다음으로, $sql 변수에는 $boardID를 이용하여 members 테이블과 board 테이블을 JOIN한 후, boardID가 $boardID와 일치하는 게시글의 정보를 가져오는 SQL 문장이 저장됩니다.
  • $result = $connect -> query($sql); 구문은 $sql에 저장된 SQL 문장을 실행하고, 결과를 $result 변수에 저장합니다.
  • if($result) 구문은 $result 변수에 결과가 저장되어 있는지 확인합니다. 결과가 저장되어 있으면 $count = $result ->num_rows; 구문을 이용하여 결과의 행 수를 가져옵니다.
  • if($count > 0) 구문은 결과의 행 수가 0보다 큰 경우, for($i=0; $i<$count; $i++) 구문을 이용하여 각각의 행을 순회하면서 $info 변수에 저장합니다.
  • 그 다음으로, $info 변수에 저장된 정보를 이용하여 HTML <table> 태그를 이용하여 게시글 정보를 표 형태로 출력합니다.
  • 만약 결과의 행 수가 0인 경우, "게시글이 없습니다." 라는 메시지를 출력합니다.

 

 

2. 삭제할 경우 경고창 취소버튼 오류 /  글쓴사람만 수정과 삭제 가능

<?php


echo '로그인한 사용자: ' . $_SESSION['memberID'] . '<br>';
echo '게시물 작성자: ' . $info['memberID'] . '<br>';

if($_SESSION['memberID'] === $info['memberID']){
?>

<a href="boardModify.php?boardID=<?= isset($_GET['boardID']) ? $_GET['boardID'] : '' ?>" class="btnStyle3">수정하기</a>
<a href="boardRemove.php?boardID=<?= isset($_GET['boardID']) ? $_GET['boardID'] : '' ?>" class="btnStyle3" onclick="return confirm('정말 삭제하시나요?')">삭제하기</a>

<?php
} 
?>

경고창에 취소버튼을 눌러도 삭제가 되는 오류가 있었습니다. 이를 잡는 것이 두번째 미션이였고 

세번째 미션은 글쓴 사람만 삭제와 수정이 가능하도록 수정하는 것이 세번째 미션이였습니다.

 

  • 현재 로그인한 사용자의 이름을 출력합니다. $_SESSION['memberID']는 현재 로그인한 사용자의 ID를 저장하고 있는 세션 변수입니다. 이 값을 이용하여 현재 로그인한 사용자의 이름을 출력합니다.
  • 해당 게시물을 작성한 사용자의 이름을 출력합니다. $info['memberID']는 해당 게시물을 작성한 사용자의 ID를 저장하고 있는 변수입니다. 이 값을 이용하여 해당 게시물을 작성한 사용자의 이름을 출력합니다.
  • 현재 로그인한 사용자와 게시물 작성자가 같은 경우에만 수정과 삭제 버튼을 보여줍니다. if문을 이용하여 두 값이 같은지를 비교하고, 같은 경우에만 수정과 삭제 버튼이 보여지도록 구현되어 있습니다.
  • 수정 버튼을 클릭하면 boardModify.php로 이동하고, 삭제 버튼을 클릭하면 boardRemove.php로 이동합니다. 이때, 게시물 ID를 파라미터로 함께 전달합니다.
  • 또한, 삭제 버튼 클릭 시 "정말 삭제하시나요?" 라는 메시지가 나타나며, 확인을 누르면 삭제가 진행됩니다. 이 기능은 onclick 속성을 이용하여 구현되어 있습니다.