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!