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 값을 전달합니다.