Hướng dẫn dùng all continent trong PHP

Vietnamese [Tiếng Việt] translation by Dai Phong [you can also view the original English article]

Nội dung chính

  • 1. Phân trang
  • 2. Cơ sở dữ liệu
  • 3. Paginator
  • Paginator.class.php
  • Lấy về Kết quả
  • Hiện thị các Liên kết Phân trang
  • 4. Index.php
  • Sử dụng Paginator
  • Hiển thị Kết quả
  • Các Liên kết Phân trang

Tôi có thể nhớ những năm trước đây khi lần đầu tiên tôi bắt đầu viết code PHP và MySQL, tôi rất hào hứng khi lần đầu tiên tôi có được thông tin từ một cơ sở dữ liệu để hiển thị trên một trình duyệt web.

Đối với những 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 những dòng dữ liệu đó hiển thị trên màn hình dựa theo code mà tôi đã viết [được rồi, vì thế nên tôi đã sao chép một ví dụ từ một cuốn sách] đã cho tôi một sự hân hoan cao độ. Có thể tôi đã không hiểu hết tất cả mọi thứ lúc đó, nhưng thành công đầu tiên đó đã thúc đẩy tôi đến các dự án lớn hơn và tốt hơn.

Mặc dù mức độ hồ hởi của tôi đối với cơ sở dữ liệu có thể không còn giống như trước,
nhưng kể từ khi "hello world" đầu tiên của tôi với PHP và MySQL tôi đã bị cuốn hút vào
sức mạnh trong việc 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 phải đối mặt đó là lấy một lượng lớn thông tin và làm cho nó dễ tiếp thu. Cho dù nó là danh sách khách hàng của một công ty lớn hoặc một danh sách mp3 của cá nhân, thì việc phải ngồi và nhìn chằm chằm vào từng dòng dữ liệu có thể gây nhàm chán
và bực bội. Một nhà phát triển giỏi có thể làm được gì? Đó là phân trang!

1. Phân trang

Phân trang cơ bản là quá trình lấy một tập hợp các kết quả và phân chia
chúng thành các trang để làm cho chúng dễ xem hơn.

Tôi nhận ra ngay từ đầu rằng nếu tôi có 5000 dòng thông tin để hiển thị thì không chỉ
làm người ta nhức đầu khi cố gắng đọc, mà hầu hết các trình duyệt sẽ mất
nhiều thời gian [khoảng hơn 5 giây] để hiển thị nó.

Để giải quyết vấn đề này tôi sẽ viết các lệnh SQL khác nhau để kéo ra các khối dữ liệu, và nếu tôi 
đang ở trong một tâm trạng tốt tôi thậm chí có thể đưa ra thêm một vài nút "next" và "previous".
Sau một thời gian, việc phải đặt code này vào mọi dự án tương tự và tùy biến
nó để phù hợp đã trở nên lỗi thời. Nhanh. Và như mọi nhà phát triển giỏi đều biết, sự lười biếng sinh ra sự sáng tạo
hay đại loại thế. Vì vậy, một ngày nọ tôi ngồi xuống và quyết định nghĩ ra một
lớp PHP đơn giản, linh hoạt và dễ sử dụng sẽ tự động thực hiện công việc nặng nhọc
cho tôi.

Giới thiệu về tôi và các lớp PHP. Tôi không hướng đối tượng. Thực tế, tôi hầu như không
bao giờ sử dụng những thứ đó. Nhưng sau khi đọc một số hướng dẫn và ví dụ về OOP, và một số
thử nghiệm đơn giản và các ví dụ lỗi, tôi quyết định thử nó và bạn biết gì không?
Nó làm việc rất tốt với phân trang. Code được sử dụng ở đây được viết bằng PHP 4 nhưng sẽ
làm việc trong PHP 5.

2. Cơ sở dữ liệu

Cần phải yêu MySQL. Không có ý xúc phạm đến các hệ thống cơ sở dữ liệu khác hiện có, 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à chúng cung cấp cho bạn một số
cơ sở dữ liệu mẫu miễn phí để khám phá tại //dev.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 world [~ 90k nén] có chứa trên
4000 bản ghi để bạn thực hành, nhưng vẻ đẹp của script PHP mà chúng ta sẽ tạo ra 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ĩ rằng tất cả những gì chúng ta có thể đồng ý với nhau đó là nếu chúng ta quyết định
không phân trang các kết quả của chúng ta thì chúng ta sẽ gặp rắc rối với một số
kết quả rất dài và khó sử dụng như sau:

[nhấp vào để xem kích thước đầy đủ, khoảng 338k]

Vì vậy, hãy chia nhỏ dữ liệu của chúng ta thành những trang dễ tiếp nhận như thế này:

Đẹp chứ nhỉ? Một khi bạn bỏ lớp Pagination vào code của bạn, bạn có thể
chuyển đổi một cách nhanh chóng và dễ dàng một bộ dữ liệu khổng lồ thành các trang dễ dàng điều hướng với
chỉ một vài dòng code. Thật đấy.

3. Paginator

Ví dụ này sẽ bao gồm hai script, lớp Paginator có thể tái sử dụng và tập tin index sẽ hiển thị các phần tử của bảng và các điều khiển.

Paginator.class.php

Lớp Paginator sẽ chỉ có hai phương thức và hàm xây dựng, chúng ta sẽ xây dựng nó dần dần, làm đến đâu giải thích đến đó.

        
                
                
                
                
        

Bây giờ để tận dụng lớp Paginator của chúng ta, hãy thêm code php sau đây ở phía trên cùng của tài liệu.

Script này khá đơn giản, chúng ta chỉ yêu cầu lớp Paginator, lưu ý code này giả định rằng tập tin này nằm trong cùng một thư mục với tập tin index.php, nếu không bạn nên cập nhật đường dẫn cho phù hợp.

Sau đó, chúng ta tạo kết nối đến cơ sở dữ liệu bằng cách sử dụng thư viện MySQLi, truy xuất các tham số của paginator từ yêu cầu GET và thiết lập truy vấn, vì đây không phải là một bài viết về MySQL hay bất kỳ một cơ sở dữ liệu nào nên tôi sẽ không đi 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 ta tạo ra đối tượng Paginator và truy xuất kết quả cho trang hiện tại.

Hiển thị Kết quả

Bây giờ để hiển thị kết quả đã lấy được, hãy thêm code sau vào phần thân của bảng [table].

        
                
                
                
                
        

Ở đây, chúng ta đơn giản là lặp qua thuộc tính data của kết quả [results] chứa các bản ghi thành phố và tạo ra một hàng cho mỗi một trong số chúng.

Các Liên kết Phân trang

Bây giờ để hiển thị các liên kết phân trang hãy thêm code dưới đây vào bên dưới bảng.

 

Đối với phương thức createLinks của Paginator chúng ta truyền tham số links và lớp css có được cho các liên kết phân trang được sử dụng từ bootstrap. Đây là kết quả trang đã được tạo ra.

Tóm tắt

Bài này hẳn sẽ cung cấp cho bạn tất cả mọi thứ mà bạn cần phải biết để làm việc với phân trang trong ứng dụng của bạn.

Xin đừng ngại để lại câu hỏi, nhận xét hoặc phản hồi trong phần bình luận bên dưới nhé!

Chủ Đề