Codeigniter返回错误的“分页”结果

时间:2017-04-19 09:33:39

标签: php codeigniter pagination

我有这个辅助方法,应该做的工作是准备分页数据,以便在控制器上检索它... 基本上这是在帮助器中发生的代码

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条记录......

如果您需要任何其他信息,请告诉我,我会提供。谢谢

2 个答案:

答案 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/

相关问题