Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tạo nhiều trang từ một truy vấn mysql

Như bạn đoán, bạn phải sử dụng LIMIT từ khóa .

Nó chấp nhận hai giá trị (trích dẫn) :

  • phần bù của hàng đầu tiên sẽ trả về
  • số lượng hàng tối đa để trả về


Trong trường hợp của bạn, bạn sẽ phải sử dụng một cái gì đó như thế này cho trang đầu tiên:

select * from your_table order by ... limit 0, 50

Và, sau đó, đối với trang thứ hai:

select * from your_table order by ... limit 50, 50

Và đối với cái thứ ba:

select * from your_table order by ... limit 100, 50

Và như vậy;-)


Chỉnh sửa sau nhận xét: để lấy số trang, bạn sẽ phải nhận nó từ các URL của mình, trông giống như sau:

http://www.example.com/page.php?pagenum=2

Sau đó, bạn sẽ tính giá trị đầu tiên cho giới hạn,:

$offset = 50 * intval($_GET['pagenum']);

Và đưa nó vào truy vấn của bạn:

select * from your_table order by ... limit $offset, 50


Việc tạo URL cho các trang khác nhau bây giờ là vấn đề của việc lấy các URL như sau:

http://www.example.com/page.php?pagenum=0
http://www.example.com/page.php?pagenum=1
http://www.example.com/page.php?pagenum=2
...

Nếu bạn biết rằng bạn có 700 phần tử và 50 phần tử trên mỗi trang, bạn sẽ có 700/50 trang;-)
Vì vậy, một cái gì đó như thế này nên thực hiện thủ thuật:

for ($i=0 ; $i<700/50 ; i++) {
    // Use http://www.example.com/page.php?pagenum=$i as URL
}


Tất nhiên, 700 là một giá trị có thể thay đổi và không nên được mã hóa cứng:nó phải được xác định từ cơ sở dữ liệu, sử dụng count truy vấn:

select count(*) as total
from your_table
...


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. sql tham gia dưới dạng biểu đồ venn

  2. Điều kiện WHERE trong MySQL với 16 ví dụ truy vấn khác nhau

  3. Chèn đầu vào của khách hàng vào cơ sở dữ liệu MySQL bằng C

  4. Cách thoát từ khóa giá trị trong mysql khi sử dụng câu lệnh Chọn

  5. Kết nối mysql từ xa qua máy chủ miễn phí