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 중국어 웹사이트의 기타 관련 기사를 참조하세요!