글 쓰고, 수정하고, 삭제까지! 내 손으로 만드는 PHP 게시판 실전 튜토리얼 📝
안녕하세요! 웹 개발을 배우다 보면 “나만의 게시판 만들기”는 꼭 도전하게 되는 미션 중 하나죠. 저도 처음엔 어떻게 DB에 글을 저장하고, 목록으로 뿌려주는지 도무지 감이 안 잡혀서 엄청 헤맸던 기억이 나요. 그런데 하나씩 만들어보다 보니 “아, 이게 바로 실무에서 말하는 CRUD 기능이구나!” 하고 실감하게 되더라고요. 이번 포스트에서는 글 등록(Create), 글 목록(Read), 글 수정(Update), 글 삭제(Delete)까지 실제 게시판의 핵심 기능을 구현해볼 거예요. 기초 문법은 알지만 실제 프로젝트는 처음이신 분들께 딱 맞는 튜토리얼입니다. 간단한 구조지만 진짜 돌아가는 PHP 게시판을 직접 만들며 자신감을 키워보세요!
목차
PHP 게시판이란? 어떻게 동작할까?
게시판은 글을 등록하고, 조회하고, 수정하고, 삭제할 수 있는 기본적인 웹 애플리케이션 구조입니다. 흔히 CRUD(Create, Read, Update, Delete)라고 부르는 4가지 기능을 갖추고 있어요. 웹 개발에서 가장 많이 쓰이는 기능 중 하나이며, 실무에서도 다양한 형태로 활용됩니다.
PHP 게시판은 다음과 같은 흐름으로 작동합니다:
사용자가 글쓰기 폼에 입력 → PHP가 DB에 저장 → 목록 페이지에서 글 불러오기 → 사용자가 글을 클릭하면 상세 페이지 → 수정 또는 삭제 요청.
이 흐름만 이해하면 게시판 구조가 쉽게 눈에 들어올 거예요!
게시판 데이터베이스 설계 및 생성
게시판 기능을 구현하기 위해서는 MySQL에 테이블을 하나 만들어야 해요. 다음은 가장 기본적인 구조입니다. 글 제목, 작성자, 본문 내용, 등록일 등을 저장할 수 있는 컬럼을 생성합니다.
CREATE TABLE board (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(200) NOT NULL,
writer VARCHAR(100) NOT NULL,
content TEXT NOT NULL,
created DATETIME DEFAULT CURRENT_TIMESTAMP
);
컬럼 | 설명 |
---|---|
id |
고유 글 번호 (자동 증가) |
title |
글 제목 |
writer |
작성자 이름 |
content |
글 내용 (본문) |
created |
작성 일시 (자동 저장) |
글 목록 출력 페이지 만들기
가장 먼저 사용자가 보는 목록 페이지를 만들어볼게요. 이 페이지에서는 DB에서 글 목록을 불러와서 표 형태로 출력합니다.
- MySQL에서 모든 글 데이터를 SELECT
- 반복문으로
while
또는foreach
를 사용해 출력 - 글 번호, 제목, 작성자, 날짜 등을 표 형식으로 표시
$sql = "SELECT * FROM board ORDER BY id DESC";
$result = mysqli_query($conn, $sql);
while ($row = mysqli_fetch_assoc($result)) {
echo "<tr>";
echo "<td>" . $row['id'] . "</td>";
echo "<td>" . $row['title'] . "</td>";
echo "<td>" . $row['writer'] . "</td>";
echo "<td>" . $row['created'] . "</td>";
echo "</tr>";
}
글쓰기 입력폼과 등록 처리
이제 사용자가 글을 작성할 수 있도록 입력 폼을 만들고, 입력한 데이터를 데이터베이스에 저장하는 기능을 구현해볼게요. 보통 write.php
와 write_process.php
로 파일을 분리합니다.
<form action="write_process.php" method="POST">
제목: <input type="text" name="title"><br>
작성자: <input type="text" name="writer"><br>
내용:<br>
<textarea name="content" rows="5" cols="50"></textarea><br>
<button type="submit">글 등록</button>
</form>
// write_process.php
session_start();
include 'dbconn.php';
$title = $_POST['title'];
$writer = $_POST['writer'];
$content = $_POST['content'];
$sql = "INSERT INTO board (title, writer, content) VALUES ('$title', '$writer', '$content')";
$result = mysqli_query($conn, $sql);
if ($result) {
echo "글이 등록되었습니다.";
header("Location: board_list.php");
} else {
echo "등록 실패: " . mysqli_error($conn);
}
수정 및 삭제 기능 구현하기
글 목록이나 상세 페이지에 “수정”과 “삭제” 버튼을 넣고, 각 기능을 처리하는 별도 파일을 만듭니다. 다음은 대표적인 처리 방식입니다.
기능 | 처리 방법 |
---|---|
글 수정 | 수정할 글 ID를 가져와 UPDATE board SET ... 쿼리 실행 |
글 삭제 | 삭제 버튼 클릭 시 DELETE FROM board WHERE id=... |
삭제 전 확인 | JavaScript로 “정말 삭제하시겠습니까?” 팝업 추가 |
게시판 완성 후 기능 확장 팁
기본적인 게시판이 완성됐다면, 다음 기능을 추가하면서 점점 더 발전시켜볼 수 있어요!
- 페이징 기능 (페이지 나눠보기)
- 댓글 기능 추가
- 작성자 로그인 인증 연동
- 비밀번호 확인 후 수정/삭제 허용
- 파일 첨부 및 이미지 미리보기
네. 데이터를 저장하고 불러오기 위해 MySQL 같은 데이터베이스가 필수예요. 파일에 저장하는 방식도 가능하지만, 검색이나 수정이 불편해요.
꼭은 아니지만 일반적으로 자동 증가 방식이 가장 편리하고 안전합니다. 직접 번호를 관리하면 중복이나 충돌 위험이 커져요.
대부분 SQL 구문 오류, DB 연결 문제, 또는 POST/GET 값 누락이에요. 항상 쿼리 실행 결과를 확인하고 mysqli_error()
를 사용해 디버깅하세요.
<textarea>
태그는 줄바꿈과 여러 줄 입력이 가능해요. PHP에서 $_POST['content']
로 받아오면 문자열로 처리됩니다.
SELECT * FROM board ORDER BY id DESC
처럼 정렬 순서를 DESC
로 설정하면 최신 글이 위로 정렬됩니다.
사용자 입력은 반드시 htmlspecialchars()
로 처리하고, 쿼리 실행 전에는 mysqli_real_escape_string()
또는 prepared statement 사용을 권장합니다.
저도 처음 게시판을 만들 땐 “이걸 내가 진짜 할 수 있을까?”라는 걱정이 많았어요. 그런데 글 하나를 DB에 저장하고, 다시 목록에 출력해보니 어느새 자신감이 생기더라고요. 중요한 건 모든 웹 애플리케이션의 핵심은 CRUD라는 사실이에요. 게시판은 그걸 가장 직관적으로 익힐 수 있는 최고의 실습 도구랍니다. 이 글을 따라오셨다면 벌써 글쓰기부터 목록, 수정, 삭제까지 핵심 로직을 모두 경험해보신 거예요. 여기서 멈추지 말고 댓글 기능이나 회원 인증도 도전해보세요. 여러분의 첫 PHP 게시판이 분명 나중엔 포트폴리오가 될 수도 있어요. 오늘도 한 걸음 성장한 여러분, 정말 멋집니다 💜
'💻 쇼핑몰 자동화 & 웹 개발 가이드' 카테고리의 다른 글
[PHP 입문] 이미지 처리: 업로드, 썸네일, 워터마크까지 (25) | 2025.04.18 |
---|---|
[PHP 입문] PHP 이메일 발송 마스터 가이드 (14) | 2025.04.17 |
[PHP 입문] MySQL 연동 기초: 데이터베이스 첫걸음 (36) | 2025.04.15 |
[PHP 입문] 세션(Session) 개념과 로그인 상태 유지 구현 (28) | 2025.04.14 |
[PHP 입문] 로그인 시스템 완성: 세션, 보안 처리까지 (69) | 2025.04.11 |