【发布时间】:2017-10-05 23:22:21
【问题描述】:
我有一个包含超过 5,000 条记录的数据库,我想获取 50 行,然后在用户单击下一个时获取下一个 50 行,而当用户单击上一个时则相反。
表名:事件
我的试验是
select * from events where entred_by = '$id' limit $limit, 50
但问题是我无法计算下一行和上一行。
编辑
$start = '0';
$PAGE_P = $_GET['p'];
$PAGE_N = $_GET['n'];
if(!numeric($PAGE_N)){
$PAGE_N = 50;
$PAGE_P = 0;
$start = '0';
}else{
if(isset($_GET['n'])){
$PAGE_N = $PAGE_N + 50;
$PAGE_P = $PAGE_N - 50;
$start = $PAGE_N;
}else{
$PAGE_N = $PAGE_P + 50;
$PAGE_P = $PAGE_N - 50;
$start = $PAGE_P;
}
}
$this->query = SQL::get("
SELECT * FROM event
INNER JOIN user
ON user.user_id = event.entered_by
ORDER BY event_id ASC LIMIT $start,50
");
我进行了编辑,通过编辑我可以使用下一个按钮,该按钮有效,但是当我按上一个按钮时,它会返回到第 1 行。
【问题讨论】:
-
假设一个自然的排序顺序,你只需每次调整你的限制。限制 50,50(前锋)-> 限制 100,50(前锋),限制 150,50(前锋)-> 限制 100,50(后退)
-
这叫分页..有数百篇文章。