본문 바로가기
따라 공부하기/PHP게시판 따라하기

[PHP+MySQL]게시판 만들기 3 - 글작성과 글 읽기

by DawIT 2020. 12. 2.
320x100

이 글은 이곳을 참고하여 쓰여졌습니다.

 

저번에 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; 구문에 의해 조회수가 증가하고 글이 잘 보이는 것을 확인할 수 있다.

 

다음에는 글 수정 및 삭제, 그리고 내가 추가한 추천수 기능을 구현해보려고 한다.

댓글