Phân trang PHP JSON
Đôi khi, bạn có thể thấy thuận tiện khi tìm nạp một số trang kết quả của người dùng và đưa chúng vào tệp JSON. Tôi đã tạo một tập lệnh PHP để thực hiện việc này, tập lệnh này được đính kèm và cũng được dán bên dưới Show
Ghi chú. Zendesk cung cấp mẹo này chỉ nhằm mục đích hướng dẫn. Zendesk không hỗ trợ hoặc đảm bảo thông tin hoặc bất kỳ mẫu mã nào. Zendesk cũng không thể cung cấp hỗ trợ cho các công nghệ của bên thứ ba, chẳng hạn như PHP. Đăng bất kỳ vấn đề nào trong phần nhận xét của từng mẹo hoặc tìm kiếm giải pháp trực tuyến.
Tải xuống tập lệnh này hoặc sao chép và dán tập lệnh này vào một tệp có tên là phân trang. php. Điền vào các biến ở đầu, $resource, $start_page, $end_page, $subdomain và $userpwd, như được giải thích trong phần nhận xét của tập lệnh Sau đó, điều hướng đến thư mục mà bạn đã tải xuống tệp và từ thiết bị đầu cuối của bạn chạy lệnh php paginate. php để tạo tệp mới chứa kết quả của bạn, trong tệp có tên results. json. Tệp được thiết kế để ghi đè và không nối thêm Sau khi nhận được kết quả, bạn có thể xử lý theo nhu cầu. Thông tin này có thể hữu ích để tìm mục nhập nào trong mảng là duy nhất so với. trùng lặp. Để làm như vậy, xuất kết quả vào kết quả. json, sau đó chạy một trong hai lệnh bên dưới, lệnh đầu tiên hiển thị số lượng kết quả duy nhất và lệnh thứ hai hiển thị các giá trị duy nhất thực tế 98 99 Sử dụng các lệnh này cũng yêu cầu bạn phải có jq, có thể tải xuống từ. https. //stedolan. github. io/jq/tải xuống/ Tôi có thể nhớ nhiều năm trước, khi tôi lần đầu tiên bắt đầu viết mã bằng PHP và MySQL, tôi đã rất phấn khích khi lần đầu tiên lấy thông tin từ cơ sở dữ liệu để hiển thị trong trình duyệt web Đối với một người có ít kiến thức về cơ sở dữ liệu và lập trình, việc nhìn thấy các hàng trong bảng đó hiển thị trên màn hình dựa trên mã tôi đã viết (được thôi, vì vậy tôi đã sao chép một ví dụ từ một cuốn sách) mang lại cho tôi cảm giác chiến thắng. Có thể lúc đó tôi chưa hiểu hết tất cả những điều kỳ diệu trong công việc, nhưng thành công đầu tiên đó đã thôi thúc tôi thực hiện những dự án lớn hơn và tốt hơn Mặc dù mức độ say mê của tôi đối với cơ sở dữ liệu có thể không còn như trước đây, nhưng kể từ lần đầu tiên tôi gặp gỡ 'xin chào thế giới' với PHP và MySQL, tôi đã bị cuốn hút vào khả năng làm cho mọi thứ trở nên đơn giản và dễ sử dụng Là một nhà phát triển, một vấn đề mà tôi thường xuyên gặp phải là lấy một lượng lớn thông tin và làm cho nó dễ hiểu. Cho dù đó là danh sách khách hàng của một công ty lớn hay danh mục MP3 cá nhân, việc phải ngồi và nhìn chằm chằm vào từng hàng dữ liệu có thể khiến bạn nản lòng và bực bội. Một nhà phát triển giỏi có thể làm gì? Tìm kiếm một giải pháp nhanh chóng?Nếu bạn đang tìm kiếm một giải pháp nhanh chóng, thì có một bộ sưu tập tuyệt vời các tập lệnh phân trang và trình trợ giúp tại Envato Market Ví dụ: hãy dùng thử lớp phân trang ZPager PHP. Nó giúp dễ dàng tạo liên kết phân trang danh sách và tùy chỉnh chúng chỉ bằng vài cú nhấp chuột. ZPager hỗ trợ Bootstrap, MySQL và Smarty Template Engine và nó cũng cho phép bạn sử dụng các URL thân thiện với SEO 1. Phân trangPhân trang về cơ bản là quá trình lấy một tập hợp kết quả và trải chúng ra các trang để dễ xem hơn Tôi đã sớm nhận ra rằng nếu tôi có 5.000 hàng thông tin để hiển thị, thì không chỉ ai đó sẽ phải đau đầu để thử và đọc, mà hầu hết các trình duyệt sẽ sử dụng Internet vĩnh viễn (tôi. e. hơn khoảng năm giây) để hiển thị nó. Để giải quyết vấn đề này, tôi đã tạo một lớp PHP đơn giản, linh hoạt và dễ sử dụng mà tôi có thể sử dụng để phân trang trong tất cả các dự án của mình 2. Cơ sở dữ liệuPhải yêu MySQL. Không xúc phạm đến các hệ thống cơ sở dữ liệu khác ngoài kia, nhưng đối với tôi, tất cả những gì tôi cần là MySQL. Và một tính năng tuyệt vời của MySQL là họ cung cấp cho bạn một số cơ sở dữ liệu mẫu miễn phí để chơi tại https. // nhà phát triển. mysql. com/doc/#sampledb Đối với các ví dụ của tôi, tôi sẽ sử dụng cơ sở dữ liệu thế giới (đã nén ~90k), chứa hơn 4.000 bản ghi để chơi, nhưng cái hay của tập lệnh PHP mà chúng tôi sẽ tạo là nó có thể được sử dụng với bất kỳ cơ sở dữ liệu nào. Bây giờ tôi nghĩ tất cả chúng ta đều có thể đồng ý rằng nếu chúng ta quyết định không phân trang kết quả của mình, chúng ta sẽ nhận được một số kết quả rất dài và khó sử dụng như sau Vì vậy, hãy bắt tay vào chia nhỏ dữ liệu của chúng ta thành những phần dễ hiểu như thế này Đẹp, phải không? . Có thật không 3. Trình đánh số trangVí dụ này sẽ bao gồm hai tập lệnh. lớp phân trang có thể tái sử dụng và tệp chỉ mục sẽ hiển thị các mục và điều khiển của bảng người đánh số trang. tầng lớp. phpLớp paginator sẽ chỉ có hai phương thức và hàm tạo. Chúng tôi sẽ xây dựng nó dần dần, giải thích từng bước khi chúng tôi tiến về phía trước 1
2 3 class Paginator { 4 _______9 10
0
1
2
3
4
5
6
7
820 21 Định nghĩa này chỉ đặt các biến thành viên bắt buộc của trình phân trang. Vì đây là lớp trình trợ giúp và nó chỉ dành cho phân trang, nên nó sẽ dựa vào kết nối hợp lệ đến máy chủ MySQL và một truy vấn đã được xác định, mà chúng tôi sẽ thêm các tham số cần thiết để phân trang kết quả. Chúng ta sẽ bắt đầu với phương thức khởi tạo 1
2 3 27 4 29 5 1
03
2
47
69
829 20 21 Khá đơn giản phải không? . Sau đó, nó sẽ tính toán tổng số hàng được truy vấn đó truy xuất mà không có bất kỳ tham số giới hạn hoặc bỏ qua nào. Tổng số này là cần thiết để tạo liên kết cho trình phân trang Lưu ý rằng, để đơn giản, chúng tôi không thực hiện kiểm tra lỗi hoặc bất kỳ xác thực nào khác đối với các tham số đã cho, nhưng trong một ứng dụng trong thế giới thực, những kiểm tra này sẽ cần thiết Truy xuất kết quảBây giờ, hãy tạo phương thức sẽ thực sự phân trang dữ liệu và trả về kết quả 1
2 37 3 29 4 class Paginator {1 5 class Paginator {3
0
2class Paginator {7
4class Paginator {9
641
843 20 45 46 47 48 0 1 2 3 4 45 6 8 9 50 51 52 53 54 55 56 57 58 100 101 102 21 Hãy phân tích từng bước một. Đầu tiên, chúng tôi đặt giới hạn và tham số trang, theo mặc định được đặt lần lượt là 10 và 1. Sau đó, chúng tôi kiểm tra xem người dùng có yêu cầu một số hàng nhất định hay tất cả chúng. Dựa trên tham số này và tham số trang, chúng tôi đặt thuật ngữ 387 của truy vấn. Lưu ý rằng chúng tôi lấy một từ số trang vì tập lệnh của chúng tôi tính từ 1 thay vì từ 0 Sau đó, chúng tôi chỉ cần đánh giá truy vấn và nhận kết quả. Cuối cùng, chúng tôi tạo một đối tượng kết quả mới chứa các tham số giới hạn, trang và tổng của truy vấn đã thực hiện, cũng như dữ liệu cho từng hàng đã truy xuất Hiển thị liên kết phân trangBây giờ, hãy viết phương thức được sử dụng để lấy các liên kết phân trang 1
2 107 3 class Paginator {7 4
015 45
0
2
07
4
6
11
8
1320 46
1748 0
212
234 6
278
2950
3152 45 54 56
3758
39100
41102 45
44
46
47
48
31
50
51
5245
54
56
57
58
59
60
62
63
64
66
67
6821 Đây là một phương pháp khá dài, vì vậy hãy xem xét nó chi tiết hơn Đầu tiên, chúng tôi đánh giá xem người dùng yêu cầu một số liên kết nhất định hay tất cả chúng. Nếu người dùng đang yêu cầu tất cả các liên kết, thì chúng tôi chỉ cần trả về một chuỗi trống, vì không cần phân trang Sau đó, chúng tôi tính toán trang cuối cùng dựa trên tổng số hàng có sẵn và các mục được yêu cầu trên mỗi trang Sau đó, chúng tôi lấy tham số liên kết, đại diện cho số lượng liên kết sẽ hiển thị bên dưới và bên trên trang hiện tại và tính toán liên kết bắt đầu và kết thúc để tạo Tiếp theo, chúng ta tạo thẻ mở cho danh sách và đặt lớp cho nó với tham số lớp danh sách. Chúng tôi cũng thêm liên kết "trang trước"—lưu ý rằng đối với liên kết này, chúng tôi kiểm tra xem trang hiện tại có phải là trang đầu tiên hay không và nếu có, chúng tôi sẽ đặt thuộc tính bị vô hiệu hóa của liên kết. Chúng tôi cũng hiển thị liên kết đến trang đầu tiên và biểu tượng dấu chấm lửng trong trường hợp liên kết bắt đầu không phải là liên kết đầu tiên Tiếp theo, chúng tôi thêm các liên kết bên dưới và bên trên trang hiện tại, dựa trên các tham số bắt đầu và kết thúc được tính toán trước đó. Trong mỗi bước, chúng tôi đánh giá trang hiện tại so với trang liên kết được hiển thị và đặt lớp hoạt động tương ứng Sau đó, chúng tôi hiển thị một biểu tượng dấu chấm lửng khác và liên kết đến trang cuối cùng, trong trường hợp liên kết cuối không phải là liên kết cuối cùng Cuối cùng, chúng tôi hiển thị liên kết "trang tiếp theo" và đặt trạng thái bị vô hiệu hóa khi người dùng đang xem trang cuối cùng, đóng danh sách và trả về chuỗi HTML đã tạo Đó là tất cả về lớp học 388. Tất nhiên, chúng tôi có thể thêm setters và getters cho kết nối cơ sở dữ liệu, giới hạn, trang, truy vấn và tổng tham số, nhưng để đơn giản, chúng tôi sẽ giữ nguyên như vậy 4. Trang chỉ mụcBây giờ chúng ta sẽ tạo chỉ mục. php, chịu trách nhiệm sử dụng lớp 388 và hiển thị dữ liệu. Trước tiên, hãy để tôi chỉ cho bạn HTML cơ bản 1
712
733
754
775
79
0
81
2
83
4
85
6
87
8
8920
9146
9348
950
972
994 201 6 203 8 205 50 207 52 209 54 211 56 213 58 215 100 217 Khá đơn giản—tệp này chỉ hiển thị một bảng mà chúng tôi sẽ điền thông tin lấy từ cơ sở dữ liệu. Lưu ý rằng đối với ví dụ này, tôi đang sử dụng Bootstrap để tạo kiểu trang cơ bản Sử dụng Paginator1 219 2_______321 3 223 4 225 5 227
0229
2231
4233
6Bây giờ, để sử dụng lớp 388 của chúng tôi, hãy thêm mã PHP sau vào đầu tài liệu 1
2 238 3 4 242 5
0246
2248
4250
6252
820 256 46 48 260 0 262 Tập lệnh này khá đơn giản—chúng tôi chỉ yêu cầu lớp 388 của chúng tôi. Lưu ý rằng mã này giả định rằng tệp này nằm trong cùng thư mục với chỉ mục. php—nếu không phải như vậy, bạn nên cập nhật đường dẫn cho phù hợp Sau đó, chúng tôi tạo kết nối đến cơ sở dữ liệu của mình bằng thư viện MySQLi, truy xuất các tham số của trình phân trang từ yêu cầu GET và đặt truy vấn. Vì đây không phải là bài viết về MySQL nên tôi sẽ không đi sâu vào chi tiết về kết nối hoặc truy vấn được sử dụng ở đây Cuối cùng, chúng tôi tạo đối tượng 388 và lấy kết quả cho trang hiện tại Hiển thị kết quảBây giờ, để hiển thị kết quả thu được, hãy thêm đoạn mã sau vào phần thân của bảng 1 219 2 221 3 223 4 225 5 227
0229
2231
4233 Ở đây, chúng tôi chỉ đơn giản là lặp qua thuộc tính dữ liệu kết quả chứa các bản ghi thành phố và tạo một hàng trong bảng cho từng bản ghi Liên kết phân trangBây giờ, để hiển thị các liên kết của trình phân trang, hãy thêm đoạn mã sau vào bên dưới bảng 1 280 Đối với phương pháp phân trang 393, chúng tôi chuyển tham số 394 thu được và lớp CSS cho các liên kết phân trang được sử dụng từ Bootstrap. Đây là kết quả của trang đã tạo Cách triển khai phân trang dựa trên AJAXTrong phần này, chúng ta sẽ nhanh chóng tìm hiểu cách bạn có thể chuyển đổi ví dụ phân trang PHP ở trên thành phân trang dựa trên AJAX. Chúng tôi sẽ sửa lại tất cả các tệp và thảo luận về những thay đổi mà chúng tôi sẽ cần thực hiện Đầu tiên, hãy cập nhật chỉ mục. php, như được hiển thị trong đoạn mã sau 1
712
733
754
775
79
0
2
81
4
83
6
85
8299 20 01 46 03 48 05 0 07 2 09 4 211 6 213 8 15 50 17 52 19 54 217 Trước hết, chúng tôi đã chuyển mã HTML cần thiết để xây dựng phân trang vào ajax_pagination. php để chúng tôi có thể sử dụng lại. Tiếp theo, chúng tôi đã tải thư viện jQuery và phân trang. js ở cuối tệp ajax_pagination. tệp php trông như thế này 1
2 25 3 4 29 5
032
234
436
638
820 41 46 43 48 262 0 2 48 4 50 6 221 8 54 50 56 52 58 54 60 56 231 58 64 100 66 102 68
44221
4672
4874
5076
5278
54231
5682
5884
6086
6288 Nó khá giống nhau Tiếp theo, chúng ta hãy xem phân trang. tập tin js 1 90 2 92 3 4 95 5 97
099
2301
4303
6305
8307 20 46 310 48 312 Nó làm một vài điều ở đây. Đầu tiên, nó liên kết sự kiện nhấp chuột với mọi liên kết phân trang. Tiếp theo, khi nhấp vào liên kết, nó sẽ thực hiện lệnh gọi AJAX để tìm nạp dữ liệu danh sách của trang tương ứng và cập nhật trang Cuối cùng, bạn cần cập nhật phương thức 393 như trong đoạn mã sau 1 107 2 class Paginator {7 3
014 45 5
0
07
2
4
11
6
13
820
1746 48
210 340 2 4
276 346 8
3150 45 52 54
3756
3958 358 100 45 102
44
47
46
31
48368
5045
52
54
57
56376
58
60
63
62
64
67
6621 Về cơ bản, chúng tôi đã thêm thuộc tính 396 vào mọi liên kết để chúng tôi có thể lấy số trang khi người dùng nhấp vào liên kết Và với những thay đổi này, bạn đã chuyển phân trang của mình thành phân trang dựa trên AJAX Phần kết luậnĐiều này sẽ cung cấp cho bạn mọi thứ bạn cần biết để thiết lập và chạy phân trang trong ứng dụng của bạn Học PHP với một khóa học trực tuyến miễn phíNếu bạn muốn học PHP, hãy xem khóa học trực tuyến miễn phí của chúng tôi về các nguyên tắc cơ bản của PHP Trong khóa học này, bạn sẽ học các nguyên tắc cơ bản của lập trình PHP. Bạn sẽ bắt đầu với những kiến thức cơ bản, học cách PHP hoạt động và viết các hàm và vòng lặp PHP đơn giản. Sau đó, bạn sẽ xây dựng các lớp mã hóa để lập trình hướng đối tượng đơn giản (OOP). Đồng thời, bạn sẽ học tất cả các kỹ năng quan trọng nhất để viết ứng dụng cho web. bạn sẽ có cơ hội thực hành phản hồi các yêu cầu GET và POST, phân tích cú pháp JSON, xác thực người dùng và sử dụng cơ sở dữ liệu MySQL
Bài đăng này đã được cập nhật với sự đóng góp của Sajal Soni. Sajal là người Ấn Độ và anh ấy thích dành thời gian tạo các trang web dựa trên các khung mã nguồn mở Làm cách nào để phân trang dữ liệu JSON?JSON được phân trang thường sẽ có một đối tượng có liên kết đến các trang JSON trước đó và tiếp theo. Để có được trang trước, bạn phải gửi yêu cầu tới URL "trước". Để đến trang tiếp theo, bạn phải gửi yêu cầu tới URL "tiếp theo" . Điều này sẽ cung cấp một JSON mới với kết quả mới và liên kết mới cho các trang tiếp theo và trước đó.
Làm cách nào để hiển thị phân trang trong PHP?Các bước thực hiện để thực hiện phân trang với PHP và MySQL là. BƯỚC 1. Tạo cơ sở dữ liệu quy mô lớn. BƯỚC 2. Tạo một bảng và chèn danh sách các bản ghi trong đó. BƯỚC 3. Tạo một liên kết cho phân trang để phân tách/phân phối dữ liệu trên một số trang khác nhau và thêm nó vào cuối bảng được tạo ở bước 2
Làm cách nào để hiển thị 10 bản ghi trên mỗi trang trong PHP?Chúng tôi sẽ đặt biến $limit thành số lượng bản ghi trên mỗi trang sẽ được hiển thị. Mười bản ghi trên mỗi trang là cách hiển thị tiêu chuẩn và bạn có thể thay đổi bất kỳ giá trị nào. $eu = ($start - 0); $limit = 10; // Không có bản ghi nào được hiển thị .
Làm cách nào để lấy số trang trong phân trang trong PHP?Làm cách nào để hiển thị phân trang với trang hiện tại? |