编码点火器中的分页,出现重复输入错误



我已经在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 个整体。那好吧,但是我 clcxik 第二页它显示了 3 个 enties。两行重复。第一页 1、2、3、4 个条目被变音。在第二页中,3,4,5是ipaly。请帮忙。请

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

所以拿你的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 个位置开始读取。

您所期望的是第 2 页应该从第 5 个元素开始,因此它应该给出 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

等等...

相关内容

最新更新