我有这个辅助方法,应该做的工作是准备分页数据,以便在控制器上检索它... 基本上这是在帮助器中发生的代码
if (!isset($_GET['page'])) {
$_GET['page'] = 1;
}
if (!isset($_GET['per_page'])) {
$_GET['per_page'] = 5;
}
$results = $ci->$model->get('', $_GET['per_page'], $_GET['page']);
这是我应该返回数据的模型
public function get($tableName = "", $limit = null, $start = null)
{
if ($tableName == "") {
$tableName = $this->table;
}
if ($limit != null && $start != null) {
// problem is here with limit and start which returns wrong data
$this->db->limit($limit, $start);
$query = $this->db->get($tableName);
var_dump($query->result());
die();
}
} else {
$query = $this->db->get($tableName);
}
return $query->result();
}
问题是从模型返回的数据不正确,我无法弄清楚如何根据页码和每页项目获取正确的数据....
所以在我的情况下,如果我用paramas $_GET['page'] = 1
和$_GET['per_page'] = 5
请求数据,它将返回5条记录,但从记录2开始直到记录6.所以我的问题是如何正确请求给我说5条记录从第1页开始,然后在第2页上再给我5条记录......
如果您需要任何其他信息,请告诉我,我会提供。谢谢
答案 0 :(得分:2)
问题出在你的$ start变量中。您应该记住,当使用获取第一个5条记录时,您应该使用偏移0而不是1.计数从0开始记住:)
代码应为
public function get($tableName = "", $limit = null, $start = null)
{
if ($tableName == "") {
$tableName = $this->table;
}
if ($limit != null && $start != null) {
// problem is here with limit and start which returns wrong data
//$this->db->limit($limit, $start);
// use this instead
$this->db->limit($limit, ( $start - 1 ) * $limit );
$query = $this->db->get($tableName);
var_dump($query->result());
die();
}
} else {
$query = $this->db->get($tableName);
}
return $query->result();
}
答案 1 :(得分:0)
这是一个工作示例尝试这样做:https://www.formget.com/pagination-in-codeigniter/