AI 웹 개발 : 페이징·검색·필터 기능 구현하기 (초보자ㆍ비전공자를 위한 AI 웹 개발 실무 시리즈) | Part 4

1. 게시판을 “쓰는 공간”에서 “찾는 공간”으로

Part 3까지 진행하면서
우리 게시판은 다음 상태가 되었습니다.

  • 게시글 목록이 있고
  • 글을 작성할 수 있으며
  • 댓글을 통해 사용자 참여도 가능한 상태

하지만 여전히 한 가지 큰 문제가 남아 있습니다.

글이 많아졌을 때,
이 게시판을 어떻게 탐색할 것인가?

실제 서비스에서
게시판이 불편하다고 느껴지는 순간은 대부분 이때입니다.

  • 글이 너무 많아 한눈에 안 보일 때
  • 원하는 글을 찾기 어려울 때
  • 페이지 이동이 직관적이지 않을 때

그래서 이번 Part 4에서는
게시판의 “가독성과 탐색성”을 책임지는 핵심 기능들을 다룹니다.

AI와 협업을 하는 개발자의 모습을 AI를 활용해 시각화한 이미지입니다.
본 이미지의 저작권은 블로그 주인 제로에게 있습니다.
AI와 협업을 하는 개발자의 모습을 AI를 활용해 시각화한 이미지입니다.
본 이미지의 저작권은 블로그 주인 제로에게 있습니다.

2. Part 4에서 구현할 기능 정리

이번 글에서 다룰 기능은 다음 세 가지입니다.

  1. 페이징(Page Navigation)
  2. 검색(Search UI)
  3. 필터(Filter UI)

⚠️ 중요한 점은
이번 Part에서도 실제 데이터 처리 로직은 구현하지 않습니다.

이번 단계의 목표는:

  • “기능이 붙을 수 있는 구조”
  • “실무에서 바로 확장 가능한 UI”

를 만드는 것입니다.


3. 용어 설명 — 페이징, 검색, 필터란 무엇인가요?

초보자분들을 위해
먼저 용어부터 간단히 정리하겠습니다.

▪ 페이징(Paging)

게시글을 여러 페이지로 나누어 보여주는 방식입니다.
예: 1 / 2 / 3 / 다음

👉 한 페이지에 너무 많은 글을 보여주지 않기 위해 사용합니다.

▪ 검색(Search)

사용자가 키워드를 입력해
원하는 게시글을 찾는 기능입니다.

👉 제목, 내용, 작성자 기준으로 확장될 수 있습니다.

▪ 필터(Filter)

게시글을 조건별로 걸러서 보는 기능입니다.

예:

  • 최신순 / 오래된 순
  • 특정 카테고리
  • 특정 상태

👉 검색보다 더 “선택형 탐색”에 가깝습니다.


4. 왜 이 기능들이 실무에서 중요한가요?

실무 기준으로 보면
이 세 가지 기능은 “옵션”이 아닙니다.

  • 게시판이 커질수록 필수
  • 없으면 “연습용 프로젝트”처럼 보임
  • 있으면 서비스 완성도가 급격히 상승

특히 포트폴리오 관점에서는 Part 4 기능이 들어가느냐에 따라
“연습 프로젝트”“실무형 프로젝트”가 갈립니다.


5. 페이징 UI 구조 설계하기

먼저 페이징입니다.

페이징 UI는 보통 다음 요소로 구성됩니다.

  • 이전 버튼
  • 페이지 번호
  • 다음 버튼

이 세 가지가 한 묶음으로 구성되어야
이후 기능 구현이 수월해집니다.

[Cursor AI 바로가기]

📌 Cursor 입력 프롬프트 ① — 페이징 UI

게시판 목록 하단에 페이징 UI를 추가해 줘.

조건:
- 이전 / 페이지 번호 / 다음 버튼 구성
- 모바일에서도 누르기 쉬운 크기
- 실제 동작은 구현하지 않고 UI 구조만 작성
- 기존 게시글 목록과 자연스럽게 연결

HTML과 CSS만 사용하고 각 요소에 주석을 추가해 줘.

이 단계에서 중요한 것은
“페이지가 넘어간다”가 아니라,

페이지가 넘어갈 수 있어 보이는 구조입니다.

Cursor AI에 입력한 프롬프트.
이해를 돕기 위해 직접 제공하는 캡쳐화면으로 본 이미지의 저작권은 블로그 주인 제로에게 있습니다.
Cursor AI에 입력한 프롬프트.
이해를 돕기 위해 직접 제공하는 캡쳐화면으로 본 이미지의 저작권은 블로그 주인 제로에게 있습니다.

Cursor 가 생성한 페이징 UI 소스코드(일부발췌)

 <!-- 
                ============================================
                페이지네이션 영역 (Pagination Section)
                ============================================
                여러 페이지가 있을 때 페이지를 이동할 수 있는 영역
                이전 페이지, 페이지 번호, 다음 페이지 버튼 포함
                게시글 목록 하단에 자연스럽게 배치됨
            -->
            <section class="pagination-section">
                <!-- 
                    페이지네이션 컨테이너
                    이전 버튼, 페이지 번호들, 다음 버튼을 감싸는 부모 요소
                -->
                <div class="pagination">
                    
                    <!-- 
                        ============================================
                        이전 페이지 버튼 (Previous Button)
                        ============================================
                        이전 페이지로 이동하는 버튼
                        첫 페이지일 때는 비활성화 상태로 표시 가능
                    -->
                    <a href="#" class="pagination-btn pagination-prev" aria-label="이전 페이지">
                        <!-- 이전 버튼 텍스트 -->
                        <span class="pagination-btn-text">이전</span>
                    </a>
                    
                    <!-- 
                        ============================================
                        페이지 번호 영역 (Page Numbers)
                        ============================================
                        각 페이지 번호를 클릭하여 해당 페이지로 이동
                        현재 페이지는 활성화 상태로 표시
                    -->
                    <div class="pagination-numbers">
                        <!-- 페이지 번호 1 -->
                        <a href="#" class="pagination-number">1</a>
                        <!-- 페이지 번호 2 (현재 페이지 - 활성화 상태) -->
                        <a href="#" class="pagination-number pagination-number-active">2</a>
                        <!-- 페이지 번호 3 -->
                        <a href="#" class="pagination-number">3</a>
                        <!-- 페이지 번호 4 -->
                        <a href="#" class="pagination-number">4</a>
                        <!-- 페이지 번호 5 -->
                        <a href="#" class="pagination-number">5</a>
                    </div>
                    <!-- pagination-numbers 끝 -->
                    <!-- 
                        ============================================
                        다음 페이지 버튼 (Next Button)
                        ============================================
                        다음 페이지로 이동하는 버튼
                        마지막 페이지일 때는 비활성화 상태로 표시 가능
                    -->
                    <a href="#" class="pagination-btn pagination-next" aria-label="다음 페이지">
                        <!-- 다음 버튼 텍스트 -->
                        <span class="pagination-btn-text">다음</span>
                    </a>
                    
                </div>
                <!-- pagination 끝 -->
            </section>
            <!-- pagination-section 끝 -->

Cursor 가 생성한 페이징 UI 소스코드 설명

  • 페이지네이션 컨테이너를 활용해 이전 버튼, 페이지 번호들, 다음 버튼을 감싸는 부모 요소를 담아냅니다.
  • 이전 페이지 버튼으로 첫 페이지일 때는 비활성화 상태로 표시 가능
  • 페이지 번호 영역에 페이지 구성으로 각 페이지 번호를 클릭하여 해당 페이지로 이동 현재 페이지는 활성화 상태로 표시
  • 다음 페이지 버튼으로 마지막 페이지일 때는 비활성화 상태로 표시 가능
Cursor AI가 생성한 페이징 처리 화면.
이해를 돕기 위해 직접 캡쳐하여 제공하는 이미지로 본 이미지의 저작권은 블로그 주인 제로에게 있습니다.
Cursor AI가 생성한 페이징 처리 화면.
이해를 돕기 위해 직접 캡쳐하여 제공하는 이미지로 본 이미지의 저작권은 블로그 주인 제로에게 있습니다.

6. 검색 UI는 어디에 배치해야 할까요?

검색 UI는
게시판 UX에서 위치가 매우 중요합니다.

일반적으로는:

  • 게시판 제목 바로 아래
  • 또는 게시판 상단 오른쪽

이 두 위치가 가장 많이 사용됩니다.

이번 시리즈에서는
게시판 상단 영역에 검색 UI를 배치합니다.


📌 Cursor 입력 프롬프트 ② — 검색 UI

게시판 상단에 검색 UI를 추가해 줘.

조건:
- 검색어 입력 input
- 검색 버튼 포함
- 모바일에서는 세로 배치
- 데스크톱에서는 가로 배치
- 실제 검색 기능은 구현하지 않음

게시판 제목 영역과 자연스럽게 연결해 줘.

검색 UI가 추가되면
게시판의 “서비스 느낌”이 크게 살아납니다.

Cursor 프롬프트에 입력한 모습.
이해를 돕기 위해 제공하는 캡쳐화면으로 본 이미지의 저작권은 블로그 주인 제로에게 있습니다.
Cursor 프롬프트에 입력한 모습.
이해를 돕기 위해 제공하는 캡쳐화면으로 본 이미지의 저작권은 블로그 주인 제로에게 있습니다.

Cursor 가 생성한 검색 UI 소스코드(일부발췌)

<section class="search-section">
                <!-- 
                    검색 폼 컨테이너
                    검색어 입력 필드와 검색 버튼을 감싸는 부모 요소
                -->
                <form class="search-form" action="#" method="get">
                    <!-- 
                        ============================================
                        검색어 입력 영역 (Search Input Area)
                        ============================================
                        사용자가 검색어를 입력하는 input 필드
                    -->
                    <div class="search-input-wrapper">
                        <!-- 검색어 입력 필드 -->
                        <input 
                            type="text" 
                            id="search-keyword" 
                            name="keyword" 
                            class="search-input" 
                            placeholder="검색어를 입력하세요"
                        >
                    </div>
                    <!-- search-input-wrapper 끝 -->
                    
                    <!-- 
                        ============================================
                        검색 버튼 영역 (Search Button Area)
                        ============================================
                        검색을 실행하는 버튼
                        (실제 검색 기능은 구현하지 않으므로 type="button" 사용)
                    -->
                    <div class="search-button-wrapper">
                        <!-- 검색 버튼 -->
                        <button type="button" class="search-btn">
                            검색
                        </button>
                    </div>
                    <!-- search-button-wrapper 끝 -->
                </form>
                <!-- search-form 끝 -->
            </section>
            <!-- search-section 끝 -->

Cursor 가 생성한 검색 UI 소스코드 설명

  • input field로 검색어 입력 필드 생성
  • Wrapper 활용으로 입력 필드 정의
  • 검색 버튼 생성
Cursor AI 가 생성한 검색 UI 탑재 페이지.
이해를 돕기 위해 직접 캡쳐한 화면으로 본 이미지의 저작권은 블로그 주인 제로에게 있습니다.
Cursor AI 가 생성한 검색 UI 탑재 페이지.
이해를 돕기 위해 직접 캡쳐한 화면으로 본 이미지의 저작권은 블로그 주인 제로에게 있습니다.

7. 필터 UI는 검색과 어떻게 다른가요?

검색은 사용자가 직접 입력합니다.
필터는 사용자가 선택합니다.

그래서 필터 UI는 보통:

  • 드롭다운(select)
  • 버튼 그룹
  • 체크박스

형태로 구성됩니다.

이번 Part 4에서는
드롭다운 기반 필터 UI를 사용합니다.


📌 Cursor 입력 프롬프트 ③ — 필터 UI

게시판 검색 영역 옆에 필터 UI를 추가해 줘

조건:
- 드롭다운(select) 형태
- 예: 최신순 / 오래된순
- 검색 UI와 함께 배치
- 모바일에서는 줄바꿈 처리
- UI 구조만 구현

HTML/CSS 기준으로 작성해 줘.

이렇게 검색 + 필터가 함께 있으면
게시판 탐색 UX가 훨씬 좋아집니다.

Cursor AI에 입력한 프롬프트.
이해를 돕기 위해 직접 캡쳐한 화면으로 본 이미지의 저작권은 블로그 주인 제로에게 있습니다.
Cursor AI에 입력한 프롬프트.
이해를 돕기 위해 직접 캡쳐한 화면으로 본 이미지의 저작권은 블로그 주인 제로에게 있습니다.

Cursor 가 생성한 필터 UI 소스코드(일부발췌)

<!-- 
                        ============================================
                        필터 영역 (Filter Area)
                        ============================================
                        게시글 정렬 방식을 선택하는 드롭다운 필터
                        검색 UI와 함께 배치됨
                    -->
                    <div class="filter-wrapper">
                        <!-- 필터 드롭다운 -->
                        <select id="sort-filter" name="sort" class="filter-select">
                            <!-- 기본 옵션: 최신순 -->
                            <option value="latest" selected>최신순</option>
                            <!-- 오래된순 옵션 -->
                            <option value="oldest">오래된순</option>
                        </select>
                    </div>
                    <!-- filter-wrapper 끝 -->

Cursor 가 생성한 필터 UI 소스코드 설명

  • 필터 드롭다운: select 요소 사용
  • 옵션: 최신순(기본), 오래된순
  • 위치: 검색 입력 필드와 검색 버튼 옆에 배
Cursor AI가 생성한 필터 UI 페이지.
이해를 돕기 위해 직접 캡쳐한 화면으로 본 이미지의 저작권은 블로그 주인 제로에게 있습니다.
Cursor AI가 생성한 필터 UI 페이지.
이해를 돕기 위해 직접 캡쳐한 화면으로 본 이미지의 저작권은 블로그 주인 제로에게 있습니다.

8. 초보자가 꼭 이해해야 할 실무 포인트

이 단계에서
많은 분들이 착각하는 부분이 있습니다.

“아직 기능도 없는데
이걸 왜 이렇게까지 만드나요?”

실무에서는 오히려 반대입니다.

  • UI 구조가 먼저
  • 그 위에 기능이 얹혀짐
  • 구조가 잘못되면 기능 추가가 어려움

그래서 Part 4는
기능 구현 전 마지막 구조 설계 단계라고 보시면 됩니다.


9. Part 4까지 완성된 게시판 상태

여기까지 완료하셨다면
게시판은 다음 상태가 됩니다.

  • 게시글 목록
  • 글쓰기 / 댓글 UI
  • 페이징 UI
  • 검색 UI
  • 필터 UI
  • 반응형 레이아웃 유지

즉,

“기능만 붙이면 바로 서비스가 될 수 있는 상태”

까지 온 것입니다.

전체 소스코드 보기 => [제로의 GitHub 저장소 바로가기]


10. 다음 Part 5에서는 무엇을 하나요?

다음 Part 5
이번 게시판 시리즈의 마지막 글입니다.

Part 5에서는:

  • 전체 UI/UX 정리
  • 중복 구조 정리
  • 코드 가독성 개선
  • 실무 기준으로 마무리

즉,
게시판을 ‘완성본’으로 정리하는 단계입니다.


마무리

AI를 사용하면
페이징·검색·필터 UI는 정말 빠르게 만들 수 있습니다.

하지만 이 Part 4의 진짜 목적은
“빠른 구현”이 아니라,

게시판 구조를 실무 기준으로 이해하는 것

입니다.

다음 Part 5에서
이번 게시판 시리즈를 깔끔하게 마무리해보겠습니다.

다음 글에서 이어가겠습니다.

이전 편 다시보기

AI 웹 개발 : 쇼핑몰 페이지 편(Part1~Part5) 다시보기
AI 웹 개발 : 반응형 게시판 기본 레이아웃 만들기 (초보자ㆍ비전공자를 위한 AI 웹 개발 실무 시리즈) | Part 2
AI 웹 개발 : 반응형 게시판 글쓰기 & 댓글 기능 구현하기 (초보자ㆍ비전공자를 위한 AI 웹 개발 실무 시리즈) | Part 3

 AI 코딩 시리즈 다시보기

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤