Today I Learned …
[웹개발] 게시글 작성 기능 본문
* 개인적인 공부 내용을 기록한 글입니다.
최종 화면
게시글 작성 기능
0. 요약
[1] 게시글 DB 만들기
[2] 게시글 폼 만들기
[3] 폼과 DB 연결
[4] 끝!
+ 회원만 작성할 수 있게 세션 검증은 덤
1. 게시글 DB 만들기 (= board)
[0] 게시글을 저장할 DB를 적당히 만들어준다.
[1] 앞으로 필요한 컬럼들까지 한 방에 만들어줬다.
① id : 게시글 식별자
② title : 제목
③ writer : 작성자 ID
④ name : 작성자 이름
⑤ written : 작성일
⑥ content : 게시글 내용
⑦ file : 업로드한 파일
⑧ hit : 조회수
⑨ liked : 좋아요
2. 게시글 폼 만들기 (= write.php)
<?php
session_start();
if(!isset($_SESSION['user_id']) || !isset($_SESSION['user_name'])) {
echo "<script>alert('비회원입니다!');";
echo "window.location.replace('main.php');</script>";
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Write</title>
</head>
<body>
<h2>글쓰기</h2>
<form method="post" action="write_ok.php" autocomplete="off">
<p><input type=text size=25 name=title placeholder="제목" required></p>
<hr width=250px align="left">
<p><textarea cols=35 rows=15 name=content placeholder="내용을 입력하세요."></textarea></p>
<p><input type="submit" value="글쓰기"></p>
</form>
</body>
</html>
[0] 간단한 폼을 만들어준다.
[1] 세션이 없으면 (= 비회원 또는 비로그인) 접근하지 못하도록 한다.
[2] 제목과 내용을 입력받을 폼과 submit 버튼을 만들어준다.
[3] method는 post로, action은 write_ok.php로 넘겨준다.
3. 폼과 DB 연결하기 (= write_ok.php)
<?php
session_start();
if(!isset($_SESSION['user_id']) || !isset($_SESSION['user_name'])) {
echo "<script>alert('비회원입니다!');";
echo "window.location.replace('main.php');</script>";
}
$title = $_POST['title'];
$content = $_POST['content'];
$writer = $_SESSION['user_id'];
$name = $_SESSION['user_name'];
$conn = mysqli_connect('localhost', 'choco', '7173', 'study_login');
$sql = "INSERT INTO board(title, writer, name, written, content, hit, liked) VALUES ('$title', '$writer', '$name', now(), '$content', 0, 0);";
$res = mysqli_query($conn, $sql);
if($res) {
echo "<script>alert('게시글이 작성되었습니다.');";
echo "window.location.replace('board.php');</script>";
} else {
echo mysqli_error($conn);
}
?>
[0] 폼으로 받은 입력값을 DB로 넘겨준다.
[1] write.php와 동일하게 세션이 없으면 (= 비회원 또는 비로그인) 접근하지 못하도록 한다.
[2] POST로 넘어온 제목과 내용을 변수로 받아주고, 세션에 저장된 사용자 ID와 이름 정보도 따로 받아준다.
[3] INSERT 구문을 통해 데이터들을 DB로 넘겨준다.
[4] hit과 liked는 기본값으로 0을 넣어준다.
[5] 쿼리문 실행이 성공하면 게시글 작성 alert를 출력하고, 게시판 페이지*로 돌아가준다.
* 게시판 관련 내용은 다음 포스팅에서 후술한다.
[6] 쿼리문 실행이 실패하면 Error 정보를 출력한다.
'Web > APM' 카테고리의 다른 글
[웹개발] 웹 최종 한 눈에 보기 (1) : 그리팅, 로그인, 회원가입, 메인, 글쓰기, 글조회, 게시판, 검색어로 검색, 작성기간으로 검색 (0) | 2021.10.27 |
---|---|
[웹개발] 게시글 리스트 출력 기능 (0) | 2021.10.26 |
[웹개발] 비밀번호 일치 확인 (0) | 2021.10.24 |
[웹개발] 로그인 5 Cases (2) | 2021.10.24 |
[웹개발] 아이디 중복 검사 (3) | 2021.10.23 |