>데이터 베이스 >MySQL 튜토리얼 >LIMIT 및 OFFSET을 사용하여 MySQL에서 페이지 매김 링크를 동적으로 생성하는 방법은 무엇입니까?

LIMIT 및 OFFSET을 사용하여 MySQL에서 페이지 매김 링크를 동적으로 생성하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-05 15:17:10869검색

How to Dynamically Generate Pagination Links in MySQL Using LIMIT and OFFSET?

MySQL LIMIT, OFFSET: 동적 페이지 생성을 사용한 페이지 매김

페이지 매김을 사용하면 페이지당 제한된 수의 항목을 표시하여 사용자가 대규모 데이터 세트를 탐색할 수 있습니다. . MySQL LIMIT 및 OFFSET 절을 활용하면 특정 데이터 페이지를 효율적으로 검색할 수 있습니다.

그러나 잠재적인 페이지 번호마다 별도의 페이지를 만드는 것은 비효율적입니다. 대신 데이터베이스의 총 행 수를 기반으로 페이지 수를 동적으로 결정할 수 있습니다.

페이지 수 결정

총 행 수를 찾으려면 페이지가 있는 경우 먼저 별도의 쿼리를 사용하여 테이블의 총 행 수를 계산해야 합니다.

SELECT COUNT(*) FROM menuitem

이렇게 하면 열이 포함된 단일 행이 반환됩니다.

페이지 수 계산

그런 다음 총 행을 페이지당 원하는 항목으로 나누고 반올림하여 총 페이지 수를 계산할 수 있습니다. 가장 가까운 정수로 변환합니다.

$page_count = (int)ceil($row_count / $items_per_page);

잘못된 페이지 조정 요청

사용자가 존재하지 않는 페이지(예: 3개만 있는 경우 5페이지)를 요청하는 경우 상황에 따라 마지막 페이지 또는 첫 페이지로 리디렉션할 수 있습니다. .

페이지 링크 출력

전체 페이지 수를 알고 나면, 페이지 링크 목록을 생성할 수 있습니다. 현재 페이지에 대해서는 텍스트로 표시하고, 다른 페이지에 대해서는 링크를 생성합니다.

for ($i = 1; $i <= $page_count; $i++) {
  if ($i === $page) { // current page
    echo 'Page ' . $i . '<br>';
  } else { // link to other page
    echo '<a href="/menuitem.php?page=' . $i . '">Page ' . $i . '</a><br>';
  }
}

수정된 코드

동적 페이지 계산 사용 방법을 사용하면 수정된 코드는 다음과 같을 수 있습니다.

// Get page number from URL
$page = 1;
if (!empty($_GET['page'])) {
  $page = filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT);
  if (false === $page) {
    $page = 1;
  }
}

// Get total row count
$sql = "SELECT COUNT(*) FROM menuitem";
$result = mysqli_query($con, $sql);
$row_count = mysqli_num_rows($result);
mysqli_free_result($result);

// Calculate page count
$page_count = (int)ceil($row_count / $items_per_page);

// Double check page is in range
if ($page > $page_count) {
  $page = 1;
}

// Calculate offset
$offset = ($page - 1) * $items_per_page;

// Select limited data
$sql = "SELECT * FROM menuitem LIMIT " . $offset . "," . $items_per_page;
$result = mysqli_query($con, $sql);
// ... (Rest of your code) ...

// Output page links
for ($i = 1; $i <= $page_count; $i++) {
  if ($i === $page) {
    echo 'Page ' . $i . '<br>';
  } else {
    echo '<a href="/menuitem.php?page=' . $i . '">Page ' . $i . '</a><br>';
  }
}

이 코드를 사용하면 페이지 수에 따라 페이지를 동적으로 생성할 수 있습니다. 행을 데이터베이스에 저장하므로 하드 코딩된 페이지 번호와 오프셋이 필요하지 않습니다.

위 내용은 LIMIT 및 OFFSET을 사용하여 MySQL에서 페이지 매김 링크를 동적으로 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.