소소한 IT이야기/PHP_개발

[M2 MAMP] PHP 게시판 구축 - 04 (feat. 읽기(R))

Klaus 2023. 8. 12. 16:19

 

1. 게시판 글쓰기 (write.php) - C

이번 게시판의 경우 CRUD가 가능하도록 설계하려고 합니다.

CRUD - 기본적인 데이터 처리기 기능 Create(생성), Read(읽기), Update(갱신), Delete(삭제)의 첫 문자를 따서 부르는 말로 사용자 인터페이스가 가져야 하는 최소한의 기능이라고 생각하면 됩니다.

CRUD

코드를 보시면, 작성자의 이름의 경우 사용자의 ID로 출력될 수 있도록 로그인시 확인된 세션 값을 기입하였습니다.

PW의 경우 로그인된 상태로 작성하기 때문에 따로 필요가 없습니다.(UI에서도 작성자/제목/내용만 출력됩니다.)

그리고, password 컬럼와 관련 에러가 출력된다면, DB에서 password 부분을 NULL값 허용으로 변경해주시면 됩니다.

 

2. 게시판 글쓰기(write.php)

<?php
	include "./config.php";
	include "./db/db_con.php";
	include "./login_check.php";
?>
<!DOCTYPE html>
<html>
	<body>
		<nav class="navbar navbar-default">
			<?php include_once "./fragments/header.php";?>
		</nav>
		<div class="container">
			<div id="board_write">
                <form action="write_ok.php" method="post">
					<table class="table table-striped" style="text-align: center; border: 1px solid #ddddda">
						<thead>
							<tr>
								<th colspan="2" style="background-color: #eeeeee; text-align: center;"><h3>게시판 글쓰기</h3></th>
							</tr>
						</thead>	
						<tbody>
							<tr>
								<td><span class="pull-left">&nbsp;&nbsp;&nbsp;아이디 : <b><?=$userid?></b></span></td>
							</tr>
							<tr>
								<td><input type="text" class="form-control" placeholder="제목" name="title" id="utitle" required></td>
							</tr>
							<tr>
								<td><input type="password" class="form-control" placeholder="비밀번호" name="pw" id="upw" style="width: 150px;"></td>
							</tr>
							<tr>	
								<td><textarea class="form-control" placeholder="내용을 입력해주세요." name="content" id="ucontent" style="height: 350px" required></textarea></td>
							</tr>
						</tbody>
					</table>
					<center>
					<input type="checkbox" value="1" name="lockpost">비밀글<br><br> 
					<button type="submit" class="btn btn-primary">글쓰기</button>
					</center>
				</form>
			</div>
		</div> 
		<script src="./js/login.js"></script>	      
	</body>
</html>

 

3. write_ok.php

DB에 해당글을 저장하는 페이지입니다.

- lo_post를 사용하여 비밀글 유무를 확인해 줍니다.

- auto_increment 사용하여 번호를 초기화 해줍니다. 글을 자주 지우고 쓰다보니 번호가 밀리는 것을 방지하기 위해서 입니다.

<?php
	include "./config.php";
	include "./db/db_con.php";
	
	$name = $userid;
	$date = date('Y-m-d');
	$userpw =$_POST['pw'];
	$title = $_POST['title'];
	$content = $_POST['content'];
	/* lo_post 값이 1이면 잠금 0이면 공개로 비밀글을 작성하기 위한 코드 입니다. */
	if(isset($_POST['lockpost'])){
		$lo_post = '1';
	}else{
		$lo_post = '0';
	}
	
	mq("alter table board auto_increment =1");
	
	mq("INSERT 
			board
		SET	
			name = '".$name."', 
			pw = '".$userpw."', 
			title = '".$title."', 
			content = '".$content."',  
			date ='".$date."',
			lock_post = '".$lo_post."'
	");
?>
	<script>
		alert("글쓰기 완료");
		location.href = 'list.php';
	</script>