이 글은 이곳을 참고하여 쓰여졌습니다.
저번에 UI와 글 list를 제작했으니 이번에는 글 작성기능과 글 읽기 기능을 만들 것이다.
먼저 글 작성 기능을 만들기 위해 BBS폴더 안에 page폴더를 만들고 그 안에 board폴더를 만들고, 각각 write.php와 write_ok.php를 만든다.
write.php와 write_ok.php를 작성한다.
<!doctype html>
<head>
<meta charset="UTF-8">
<title>게시판</title>
<link rel="stylesheet" type="text/css" href="/BBS/css/style.css" />
</head>
<body>
<div id="board_write">
<h1><a href="/">자유게시판</a></h1>
<h4>글을 작성하는 공간입니다.</h4>
<div id="write_area">
<form action="write_ok.php" method="post">
<div id="in_title">
<textarea name="title" id="utitle" rows="1" cols="55" placeholder="제목" maxlength="100" required></textarea>
</div>
<div class="wi_line"></div>
<div id="in_name">
<textarea name="name" id="uname" rows="1" cols="55" placeholder="글쓴이" maxlength="100" required></textarea>
</div>
<div class="wi_line"></div>
<div id="in_content">
<textarea name="content" id="ucontent" placeholder="내용" required></textarea>
</div>
<div id="in_pw">
<input type="password" name="pw" id="upw" placeholder="비밀번호" required />
</div>
<div class="bt_se">
<button type="submit">글 작성</button>
</div>
</form>
</div>
</div>
</body>
</html>
값 전달 방식은 POST를 이용해 주소창에 값이 노출되지 않도록 한다.
<?php
include $_SERVER['DOCUMENT_ROOT']."/BBS/db.php";
//각 변수에 write.php에서 input name값들을 저장한다
$username = $_POST['name'];
$userpw = password_hash($_POST['pw'], PASSWORD_DEFAULT);
$title = $_POST['title'];
$content = $_POST['content'];
$date = date('Y-m-d');
if($username && $userpw && $title && $content){
$sql = query("insert into board(name,pw,title,content,date) values('".$username."','".$userpw."','".$title."','".$content."','".$date."')");
echo "<script>
alert('글쓰기 완료되었습니다.');
location.href='/BBS/index.php';</script>";
}else{
echo "<script>
alert('글쓰기에 실패했습니다.');
history.back();</script>";
}
?>
값을 전달 받아서 SQL에 쿼리를 전달하는 write_ok.php이다. 특이한 점은 password가 특수한 함수의 인자로 전달되는데, password를 암호화하기 위한 함수라고 한다. PHP 5 버전 이상부터는 내장함수여서 그냥 사용할 수 있다고 한다.
write_ok.php에서 내가 수정한 부분은 글쓰기가 완료되었을 경우 글 List페이지로 돌아가게 하기 위해 location.href의 값을 주었다.
이렇게 완료하고 새로고침 하고 글쓰기를 선택하면,
이렇게 글을 쓸 수 있는 Form이 완성되었다. 실제로 글을 작성해보았다.
글 작성 클릭시
이렇게 완료되었다는 메시지가 출력되면서 확인을 누르면 원래 index.php로 돌아가게 된다.
그러면 이렇게 정상적으로 글이 작성된 것을 확인할 수 있다.
이제 글 읽기가 가능하게 할 것이다.
일단 index.php에서 read.php로 가기 위한 코드를 작성해준다.
그리고 read.php를 작성하여 BBS 폴더에 넣는다.
<?php
include $_SERVER['DOCUMENT_ROOT']."/BBS/db.php"; /* db load */
?>
<!doctype html>
<head>
<meta charset="UTF-8">
<title>게시판</title>
<link rel="stylesheet" type="text/css" href="/BBS/css/style.css" />
</head>
<body>
<?php
$bno = $_GET['idx']; /* bno함수에 idx값을 받아와 넣음*/
$hit = mysqli_fetch_array(query("select * from board where idx ='".$bno."'"));
$hit = $hit['hit'] + 1;
$fet = query("update board set hit = '".$hit."' where idx = '".$bno."'");
$sql = query("select * from board where idx='".$bno."'"); /* 받아온 idx값을 선택 */
$board = $sql->fetch_array();
?>
<!-- 글 불러오기 -->
<div id="board_read">
<h2><?php echo $board['title']; ?></h2>
<div id="user_info">
<?php echo $board['name']; ?> <?php echo $board['date']; ?> 조회:<?php echo $board['hit']; ?>
<div id="bo_line"></div>
</div>
<div id="bo_content">
<?php echo nl2br("$board[content]"); ?>
</div>
<!-- 목록, 수정, 삭제 -->
<div id="bo_ser">
<ul>
<li><a href="/">[목록으로]</a></li>
<li><a href="modify.php?idx=<?php echo $board['idx']; ?>">[수정]</a></li>
<li><a href="delete.php?idx=<?php echo $board['idx']; ?>">[삭제]</a></li>
</ul>
</div>
</div>
</body>
</html>
이렇게 작성해주고
index.php에서 글 하나를 선택하면,
$hit = $hit + 1; 구문에 의해 조회수가 증가하고 글이 잘 보이는 것을 확인할 수 있다.
다음에는 글 수정 및 삭제, 그리고 내가 추가한 추천수 기능을 구현해보려고 한다.
'따라 공부하기 > PHP게시판 따라하기' 카테고리의 다른 글
[PHP+MySQL]게시판 만들기 6 - 댓글 작성 기능 (1) | 2020.12.05 |
---|---|
[PHP+MySQL]게시판 만들기 5 - 글 잠금 기능 (1) | 2020.12.04 |
[PHP+MySQL]게시판 만들기 4 - 글 수정 및 삭제와 추천하기 기능 (0) | 2020.12.03 |
[PHP+MySQL]게시판 만들기 2 - 글list 출력 (4) | 2020.12.01 |
[PHP+MySQL]게시판 만들기 1 - 개발환경 구축과 DB설계 (7) | 2020.11.30 |
댓글