【发布时间】:2014-02-27 00:57:58
【问题描述】:
这是我目前拥有的代码。 附言我目前正在编辑这个,试图解决这个问题,同时等待有人在这里解决它。我不太清楚为什么会这样。
分页:
$character = $this->uri->segment(3);
$config['base_url'] = base_url() . 'index.php/Controller/function/'.$character;
$config['total_rows'] = $this->Model->browse_total_rows();
$config['per_page'] = 1;
$config['num_links'] = 10;
$config['uri_segment'] = 4;
$this->pagination->initialize($config);
if(!is_numeric($character)){$data['records'] = $this->Model->get_records_filtered($character,$config['per_page'],$this->uri->segment(4));}
else{ $data['records'] = $this->Model->get_records($config['per_page'], $this->uri->segment(3));}
$data['links'] = $this->pagination->create_links();
$this->load->view('browse', $data);
每当我转到我的浏览页面时,而不是在我的页面的第 1 页上进行分页。默认情况下,我在第 2 页上。为什么?因为我认为这是我的链接。
1 2 3 >
另外,我不能点击链接 2,但我可以点击链接 1。我不知道 pagination_links 是否这样工作。但我觉得很奇怪。无论如何,我不确定它是否与我的其他问题有关。
字符部分用于选择的字母,所以例如我只想查看结果,其中 A 作为 url 的第一个字母。
index.php/controller/function/A/
因此分页的每页将放置在第 4 段。这样没有错误。但是当我不点击任何字母而只显示所有结果时。
每当我点击一个链接(每页)。网址如下所示。
index.php/controller/function/2/
但是当我点击下一页时,它会像
index.php/controller/function/2/4
所以基本上打破了分页并且没有检索到任何结果。
我尝试了其他解决方案,例如添加 IF/else 语句,如果字符为 null 或不等于 range('A','Z'),则 $config['base_url'] 最后应该没有 .$character,uri_segment 应该在第 3 位。但还是和上面一样。
编辑:
第二个问题解决了,我用的是这样的。
$character = $this->uri->segment(3);
$Alphabet = range('A','Z');
$flag = 0;
for($i=0;$i<26;$i++)
{
if($character==$Alphabet[$i])
{
$flag +=1;
}
}
似乎,if($character==range('A','Z')) 不起作用,因为只有在我回显该范围返回数组结果时才注意到,所以我不得不循环。有没有比我上面所做的更好的检查方法?
【问题讨论】:
-
您的页面段应该是 3,而不是 4。index.php 不算作段。我猜你在真正的第 4 段中的任何内容当前都被转换为 2,因此默认为第 2 页。
-
所以我应该把 index.php 放在我的配置文件的 base_url 上?因为如果我不放 index.php。它会出错,因为 ci 需要在控制器之前通过 index.php
-
我编辑了,我的分页。第 4 部分是用户选择一个字母的地方,因此每页应该在 4 上,而字母在 3 上。这就是为什么我制作了另一个名为 get_records_filtered 的模型。到目前为止,我在控制器上进行了 2 次分页,从问题的最后一部分开始,我添加了一个循环,检查用户是否选择了一个字母,如果没有,则进入默认分页,页面段为 3。而如果用户点击一封信,因为我认为的链接是这个。 foreach(range('A', 'Z')as $key=>$letter) { echo anchor('Controller/_browse/'.$letter, ' '.$letter); }
-
应该是这样的。点击字母:控制器/功能/A/[perpage here] 没有点击字母:controller/function/[perpage here]
-
如果你在url中使用index.php(没有设置url重写),你应该在config.php中设置
$config['index_page'] = 'index.php';。然后 base_url() 和其他 url 助手会自动添加它。我想我现在了解您对分页的要求,并会发布答案。
标签: php codeigniter pagination