Codeigniter中的分页出现重复的输入错误

时间:2018-10-01 08:39:25

标签: pagination codeigniter-3

我已经在codeigniter中实现了分页功能,但结果不是预期的。我有5个条目.1,2,3,4,5。 这是我的控制器

$this->data['models_num']=$this->model_models->getModels_ImageData();
$model=$this->data['models_num'];
$row=count($model);
$this->data['brands']=$this->model_brands->getBrandsData();
$config['base_url'] = base_url('services/NewCar');
$config['total_rows'] = $row;
$config['per_page'] = 4;
$config["uri_segment"] = 3;
$page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0;
$this->data['models'] = $this->model_models->getModels_ImageDataPage($config["per_page"], $page);
$config['num_links'] = $row;
$config['use_page_numbers'] = TRUE;
$this->pagination->initialize($config);

我的模特是:

$sql = "SELECT * FROM models LIMIT $limit OFFSET $start";

问题是 当我尝试第一页时,它显示4个整体。那好吧,但是我在第二页中显示了3个实体。这两行是重复的。第一页1,2,3,4条目被显示。在第二页的3、4、5中,请帮助。Pleaseee

1 个答案:

答案 0 :(得分:0)

在这些情况下,最好输入一些数字并可视化正在发生的事情...

因此,使用您的sql语句

$sql = "SELECT * FROM models LIMIT $limit OFFSET $start";

$ limit 将是您希望检索的项目数。 $ start 是开始获取它们的地方。

当$ page为0时,即第一次没有给出数字 $ start将为0。因此您将获得1,2,3,4

当$ page = 2时 $ start将为2,因此您将得到3、4、5,因为偏移量现在为2。即,它从数据库的第3个位置开始读取。

您期望的是第二页应该从第五个元素开始,所以它应该为5,6,7,8。

这里的问题是您的偏移量不正确。它必须是页码*条目数

快速解决方案是从...更改现有代码。

$page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0;
$this->data['models'] = $this->model_models->getModels_ImageDataPage($config["per_page"], $page);

$page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 1;
$this->data['models'] = $this->model_models->getModels_ImageDataPage($config["per_page"], ($page -1) * $config["per_page"]);

更改为

  1. 将您的网址段的默认值设置为1
  2. 将$ start(偏移量)的值更改为($page -1) * $config["per_page"]

因此,当没有页面时,$ page将为1(实际上是第1页时相同)。

       Offset
Page   ($page - 1 ) * $config["per_page"]  Entries
1        (1 - 1) * 4 = 0                   1,2,3,4
2        (2 - 1) * 4 = 4                   5,6,7,8
3        (3 - 1) * 4 = 8                   9,10,11,12
4        (4 - 1) * 4 = 12                  13,14,15,16

以此类推...