Trong ví dụ này, tôi sẽ giải thích cách tạo phân trang hoặc tính năng bằng PHP và MySQLi
mục lục. html
Bootstrap Example userid First name Last name City name email "; for [$i=1; $i
Đối với hướng dẫn này, chúng tôi sẽ tạo phân trang bằng PHP và MySQL, phân trang là cách người dùng sẽ điều hướng một số phần nhất định trên trang web của bạn có chứa lượng lớn dữ liệu, chúng tôi sẽ sử dụng MySQL trong hướng dẫn này, chúng tôi sẽ chọn các bản ghi từ cơ sở dữ liệu và hiển thị chúng
Chúng tôi sẽ hiển thị các nút tiếp theo và trước đó trong phân trang này, cũng như trang đầu tiên và trang cuối cùng và các trang ở giữa với trang hiện tại được đánh dấu
Chúng ta cần thực hiện nhiều công việc hơn là chỉ hiển thị các nút tiếp theo và trước đó, nhưng điều này là do chúng ta có thể thay đổi mã, thay đổi mã theo cách chúng ta muốn, nếu chúng ta muốn xóa các trang phân trang, chúng ta có thể làm như vậy
phân trang. php
Hãy tiếp tục và tạo tệp phân trang, chúng tôi sẽ gọi phân trang này. php
Bây giờ chúng tôi cần kết nối với cơ sở dữ liệu của mình, chúng tôi có thể làm như vậy với dòng mã sau
$mysqli = mysqli_connect['localhost', 'root', '', 'pagination'];
Bạn có thể thay đổi thông tin kết nối, thay thế văn bản bằng chi tiết MySQL của bạn. mysqli_connect[YOUR_HOST, YOUR_USERNAME, YOUR_PASSWORD, YOUR_DATABASE]
Với mục đích của hướng dẫn này, tôi đã tạo phân trang cơ sở dữ liệu, bên dưới là câu lệnh SQL cho cơ sở dữ liệu này, hãy chạy câu lệnh SQL bằng phpMyAdmin hoặc công cụ quản lý cơ sở dữ liệu ưa thích của bạn
CREATE DATABASE IF NOT EXISTS `pagination` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE `pagination`;
CREATE TABLE IF NOT EXISTS `students` [
`id` int[11] NOT NULL,
`name` varchar[255] NOT NULL,
`age` tinyint[1] NOT NULL,
`joined` varchar[10] NOT NULL
] ENGINE=InnoDB AUTO_INCREMENT=42 DEFAULT CHARSET=utf8;
INSERT INTO `students` [`id`, `name`, `age`, `joined`] VALUES
[1, 'David Deacon', 23, '17/08/2018'],
[2, 'Sheri Warner', 19, '03/05/2018'],
[3, 'Sean Glover', 24, '24/07/2018'],
[4, 'John West', 17, '13/08/2018'],
[5, 'Rufus Clarke', 20, '28/07/2018'],
[6, 'Roosevelt Myers', 20, '25/07/2018'],
[7, 'Elvira Andrews', 22, '02/07/2018'],
[8, 'Richard Cook', 26, '19/07/2018'],
[9, 'Lorenzo Harris', 23, '01/07/2018'],
[10, 'Eduardo Hoffman', 17, '03/07/2018'],
[11, 'Jeanne Fisher', 20, '13/08/2018'],
[12, 'Tracy Bowers', 30, '07/07/2018'],
[13, 'Heidi Lawrence', 18, '04/06/2018'],
[14, 'Tara Holland', 25, '01/07/1991'],
[15, 'Grant Edwards', 22, '22/06/2018'],
[16, 'Bradford Green', 29, '02/05/2018'],
[17, 'Gwen Schultz', 20, '02/05/2018'],
[18, 'Hope Dawson', 28, '21/08/2018'],
[19, 'Florence Osborne', 19, '17/05/2018'],
[20, 'Rickey Poole', 26, '28/06/2018'],
[21, 'Casey Sutton', 28, '06/07/2018'],
[22, 'Willie Lowe', 23, '11/05/2018'],
[23, 'Stephen Schultz', 28, '15/07/2018'],
[24, 'Eileen Lynch', 18, '12/06/2018'],
[25, 'Aaron Ruiz', 29, '02/05/2018'],
[26, 'Mae Murray', 30, '24/06/2018'],
[27, 'Regina Hanson', 21, '26/07/2018'],
[28, 'Cameron Mclaughlin', 20, '29/07/2018'],
[29, 'Earl Hale', 17, '30/06/2018'],
[30, 'Marta Blair', 24, '10/06/2018'],
[31, 'Alberta Silva', 22, '05/06/2018'],
[32, 'Joanna Holmes', 20, '20/05/2018'],
[33, 'Alex Brock', 30, '12/05/2018'],
[34, 'Colin Wright', 19, '28/05/2018'],
[35, 'Peter Schmidt', 25, '10/07/2018'],
[36, 'Joshua Price', 27, '13/07/2018'],
[37, 'Elias Chandler', 22, '19/07/2018'],
[38, 'Stanley Ross', 21, '02/06/2018'],
[39, 'Vera Cole', 26, '02/05/2018'],
[40, 'Johnny Daniels', 29, '19/07/2018'],
[41, 'Yvonne Hopkins', 21, '16/07/2018'];
ALTER TABLE `students` ADD PRIMARY KEY [`id`];
ALTER TABLE `students` MODIFY `id` int[11] NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=42;
Hãy quay lại với tệp PHP phân trang, điều chúng ta cần làm bây giờ là tạo một số biến quan trọng mà chúng ta sẽ sử dụng để phân trang
// Get the total number of records from our table "students".
$total_pages = $mysqli->query['SELECT COUNT[*] FROM students']->fetch_row[][0];
// Check if the page number is specified and check if it's a number, if not return the default page number which is 1.
$page = isset[$_GET['page']] && is_numeric[$_GET['page']] ? $_GET['page'] : 1;
// Number of results to show on each page.
$num_results_on_page = 5;
Với biến đầu tiên, chúng tôi sẽ nhận được tổng số hàng từ bảng sinh viên trong cơ sở dữ liệu của mình, điều này sẽ được sử dụng để tính toán sẽ có bao nhiêu trang. Biến thứ hai được sử dụng để xác định người dùng đang truy cập trang nào, ví dụ: nếu URL được phân trang. php?page=3 thì số trang sẽ là 3, nếu trang không tồn tại trong URL thì nó sẽ mặc định là 1. Biến thứ ba xác định số lượng kết quả sẽ được hiển thị trên mỗi trang, ví dụ: nếu chúng tôi muốn hiển thị 10 kết quả [danh sách 10 sinh viên] chúng tôi sẽ thay đổi số thành 10, mặc định là 5
Vì vậy, bây giờ chúng ta cần lấy các bản ghi từ cơ sở dữ liệu cho trang hiện tại, đoạn mã dưới đây sẽ làm việc đó
if [$stmt = $mysqli->prepare['SELECT * FROM students ORDER BY name LIMIT ?,?']] {
// Calculate the page to get the results we need from our table.
$calc_page = [$page - 1] * $num_results_on_page;
$stmt->bind_param['ii', $calc_page, $num_results_on_page];
$stmt->execute[];
// Get the results...
$result = $stmt->get_result[];
$stmt->close[];
}
Có một vài điều đang diễn ra trong đoạn mã trên, điều đầu tiên chúng ta làm là chuẩn bị câu lệnh, điều này ngăn SQL injection, nếu bạn không làm điều này, bạn có thể có nguy cơ bị hack, biến $calc_page về cơ bản xác định . Kết quả sẽ được lưu trong biến $result
Bây giờ chúng ta cần hiển thị các kết quả này, kết quả sẽ được hiển thị dưới dạng bảng, bạn có thể hiển thị kết quả theo cách bạn muốn nhưng đối với hướng dẫn này, chúng tôi sẽ sử dụng bảng
Name
Age
Join Date
Đoạn mã trên về cơ bản sẽ hiển thị từng sinh viên trong bảng với tên, tuổi và ngày tham gia của họ
Bây giờ chúng ta cần hiển thị phân trang
-