IT 정보

PHP로 간단한 페이징 처리 구현하기

jerry99 2024. 6. 11. 10:42

웹 애플리케이션에서 데이터를 페이지 단위로 나누어 표시하는 페이징(paging)은 사용자 경험을 향상시키는 중요한 기능입니다. 이번 포스팅에서는 PHP로 간단한 페이징 처리 기능을 구현하는 방법을 설명하겠습니다.

1. 페이징의 기본 원리

페이징은 데이터를 여러 페이지로 나누어 각 페이지에 일정한 수의 항목을 표시하는 방식입니다. 이를 위해 필요한 요소는 다음과 같습니다:

  • 현재 페이지 번호
  • 한 페이지에 표시할 항목의 수
  • 전체 항목의 수

2. 데이터베이스 준비

먼저, 예제 데이터를 저장할 MySQL 데이터베이스와 테이블을 준비합니다. 예를 들어, articles 테이블을 생성하고 샘플 데이터를 추가합니다.

CREATE TABLE articles 
( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, content TEXT NOT NULL );
INSERT INTO articles
(title, content) VALUES 
('Article 1', 'Content 1'),
('Article 2', 'Content 2'),
('Article 3', 'Content 3'),
-- 여러 개의 샘플 데이터 추가 ('Article 20', 'Content 20');
 

3. PHP 코드 작성

이제 PHP로 페이징 처리를 구현합니다. 아래 코드는 간단한 페이징 기능을 포함한 예제입니다.

 
<?php
// 데이터베이스 연결 설정
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } 
// 기본 설정 
$items_per_page = 5; // 한 페이지에 표시할 항목 수
$current_page = isset($_GET['page']) ? (int)$_GET['page'] : 1; // 현재 페이지 번호
$offset = ($current_page - 1) * $items_per_page; // 오프셋 계산 // 전체 항목 수 계산 
$total_items_sql = "SELECT COUNT(*) FROM articles"; $result = $conn->query($total_items_sql);
$total_items = $result->fetch_row()[0];
// 항목 조회 
$sql = "SELECT * FROM articles LIMIT $offset, $items_per_page";
$result = $conn->query($sql);
// 항목 표시
if ($result->num_rows > 0)
{ while($row = $result->fetch_assoc()) {
echo "<h2>" . $row["title"] . "</h2>"; echo "<p>" . $row["content"] . "</p>"; } 
} else { echo "No articles found."; } 
// 전체 페이지 수 계산
$total_pages = ceil($total_items / $items_per_page); 
// 페이지 링크 표시
for ($page = 1; $page <= $total_pages; $page++) { echo '<a href="?page=' . $page . '">' . $page . '</a> '; } $conn->close(); 
?>

4. 코드 설명

  1. 데이터베이스 연결: MySQL 데이터베이스에 연결합니다.
  2. 기본 설정: 한 페이지에 표시할 항목 수와 현재 페이지 번호를 설정합니다. $_GET['page']를 사용하여 현재 페이지 번호를 가져오고, 기본값은 1로 설정합니다.
  3. 전체 항목 수 계산: COUNT(*)를 사용하여 articles 테이블의 전체 항목 수를 계산합니다.
  4. 항목 조회: LIMIT 절을 사용하여 현재 페이지에 해당하는 항목을 조회합니다. OFFSET은 페이지 번호에 따라 계산됩니다.
  5. 항목 표시: 조회한 항목을 화면에 출력합니다.
  6. 전체 페이지 수 계산: 전체 항목 수를 한 페이지에 표시할 항목 수로 나누어 전체 페이지 수를 계산합니다.
  7. 페이지 링크 표시: 전체 페이지 수를 기반으로 페이지 링크를 생성하고 출력합니다.

5. 결론

이번 포스팅에서는 PHP로 간단한 페이징 처리 기능을 구현하는 방법을 살펴보았습니다. 페이징 처리는 많은 데이터를 효율적으로 관리하고 사용자에게 보다 나은 경험을 제공하는 데 중요한 역할을 합니다. 이 예제를 바탕으로 여러분의 프로젝트에 페이징 기능을 추가해보세요!