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
...