💻 쇼핑몰 자동화 & 웹 개발 가이드

[PHP 입문] CRUD 게시판 만들기 입문 가이드

rhandy 2025. 4. 16. 07:10

글 쓰고, 수정하고, 삭제까지! 내 손으로 만드는 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.phpwrite_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로 “정말 삭제하시겠습니까?” 팝업 추가

게시판 완성 후 기능 확장 팁

기본적인 게시판이 완성됐다면, 다음 기능을 추가하면서 점점 더 발전시켜볼 수 있어요!

  • 페이징 기능 (페이지 나눠보기)
  • 댓글 기능 추가
  • 작성자 로그인 인증 연동
  • 비밀번호 확인 후 수정/삭제 허용
  • 파일 첨부 및 이미지 미리보기
Q 게시판을 만들기 위해 꼭 데이터베이스가 필요한가요?

네. 데이터를 저장하고 불러오기 위해 MySQL 같은 데이터베이스가 필수예요. 파일에 저장하는 방식도 가능하지만, 검색이나 수정이 불편해요.

A 네, MySQL 같은 DB는 게시판의 핵심입니다!
Q 글 번호(id)는 꼭 AUTO_INCREMENT로 설정해야 하나요?

꼭은 아니지만 일반적으로 자동 증가 방식이 가장 편리하고 안전합니다. 직접 번호를 관리하면 중복이나 충돌 위험이 커져요.

A 네, 글 번호는 AUTO_INCREMENT가 안정적입니다!
Q PHP 게시판에서 가장 자주 발생하는 에러는 뭔가요?

대부분 SQL 구문 오류, DB 연결 문제, 또는 POST/GET 값 누락이에요. 항상 쿼리 실행 결과를 확인하고 mysqli_error()를 사용해 디버깅하세요.

A SQL 오류나 POST 값 누락이 가장 흔한 원인입니다!
Q HTML 폼에서 textarea는 어떻게 처리하나요?

<textarea> 태그는 줄바꿈과 여러 줄 입력이 가능해요. PHP에서 $_POST['content']로 받아오면 문자열로 처리됩니다.

A textarea 값은 PHP에서 문자열로 간단히 받아올 수 있어요!
Q 게시판 목록을 최신 글부터 보려면 어떻게 하나요?

SELECT * FROM board ORDER BY id DESC 처럼 정렬 순서를 DESC로 설정하면 최신 글이 위로 정렬됩니다.

A ORDER BY id DESC로 정렬하면 최신 글이 위로 올라와요!
Q 게시판에 보안 처리는 어떻게 하나요?

사용자 입력은 반드시 htmlspecialchars()로 처리하고, 쿼리 실행 전에는 mysqli_real_escape_string() 또는 prepared statement 사용을 권장합니다.

A 사용자 입력값은 항상 필터링! 보안이 생명입니다 💡

 

저도 처음 게시판을 만들 땐 “이걸 내가 진짜 할 수 있을까?”라는 걱정이 많았어요. 그런데 글 하나를 DB에 저장하고, 다시 목록에 출력해보니 어느새 자신감이 생기더라고요. 중요한 건 모든 웹 애플리케이션의 핵심은 CRUD라는 사실이에요. 게시판은 그걸 가장 직관적으로 익힐 수 있는 최고의 실습 도구랍니다. 이 글을 따라오셨다면 벌써 글쓰기부터 목록, 수정, 삭제까지 핵심 로직을 모두 경험해보신 거예요. 여기서 멈추지 말고 댓글 기능이나 회원 인증도 도전해보세요. 여러분의 첫 PHP 게시판이 분명 나중엔 포트폴리오가 될 수도 있어요. 오늘도 한 걸음 성장한 여러분, 정말 멋집니다 💜