Làm cách nào tôi có thể sử dụng phân trang trong php?

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



báo cáo quảng cáo này

Đố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


Chủ Đề