Today I Learned …

[웹개발] 게시글 작성 기능 본문

Web/APM

[웹개발] 게시글 작성 기능

염베리 2021. 10. 26. 06:09

* 개인적인 공부 내용을 기록한 글입니다.


최종 화면


게시글 작성 기능

 

 

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 정보를 출력한다.

프로필사진
berry
FE Developer, loves React & better DX
Comments