Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menjana Pautan Penomboran secara Dinamik dalam MySQL Menggunakan LIMIT dan OFFSET?

Bagaimana untuk Menjana Pautan Penomboran secara Dinamik dalam MySQL Menggunakan LIMIT dan OFFSET?

Linda Hamilton
Linda Hamiltonasal
2024-12-05 15:17:10866semak imbas

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

Penomboran menggunakan MySQL LIMIT, OFFSET: Penciptaan Halaman Dinamik

Penomboran membenarkan pengguna menavigasi set data yang besar dengan memaparkan bilangan item yang terhad setiap halaman . Dengan menggunakan klausa MySQL LIMIT dan OFFSET, kami boleh mendapatkan semula halaman data tertentu dengan cekap.

Walau bagaimanapun, adalah tidak cekap untuk membuat halaman berasingan untuk setiap nombor halaman yang berpotensi. Sebaliknya, kita boleh menentukan bilangan halaman secara dinamik berdasarkan jumlah bilangan baris dalam pangkalan data.

Menentukan Bilangan Halaman

Untuk mencari jumlah bilangan halaman, kita mesti terlebih dahulu mengira jumlah bilangan baris dalam jadual menggunakan pertanyaan berasingan.

SELECT COUNT(*) FROM menuitem

Ini akan mengembalikan satu baris dengan lajur yang mengandungi jumlah bilangan baris.

Mengira Kiraan Halaman

Kami kemudiannya boleh mengira jumlah halaman dengan membahagikan jumlah baris dengan item yang dikehendaki setiap halaman dan membulatkan ke atas kepada integer terdekat.

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

Melaraskan untuk Halaman Tidak Sah Permintaan

Apabila pengguna meminta halaman yang tidak wujud (mis., halaman 5 apabila hanya terdapat 3), kami boleh mengubah halanya ke halaman terakhir atau halaman pertama, bergantung pada situasi .

Pautan Halaman Keluaran

Setelah kami mengetahui jumlah halaman, kami boleh menjana senarai pautan halaman. Untuk halaman semasa, kami memaparkannya sebagai teks, manakala untuk halaman lain, kami membuat pautan ke halaman tersebut.

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>';
  }
}

Kod Semakan

Menggunakan pengiraan halaman dinamik kaedah, kod anda yang disemak mungkin kelihatan seperti ini:

// 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>';
  }
}

Kod ini membolehkan anda membuat halaman secara dinamik berdasarkan bilangan baris dalam pangkalan data, menghapuskan keperluan untuk nombor halaman berkod keras dan mengimbangi.

Atas ialah kandungan terperinci Bagaimana untuk Menjana Pautan Penomboran secara Dinamik dalam MySQL Menggunakan LIMIT dan OFFSET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn