这是我目前的代码。 附:我正在编辑这个,尝试解决这个问题,同时等待有人在这里解决它。我不太清楚为什么会这样。
分页:
$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作为网址的第一个字母。
index.php/controller/function/A/
因此,每页的分页将放在第4段。它没有错误。但是当我没有点击任何字母而只显示所有结果时。
每当我点击一个链接(每页)。网址看起来像这样。
index.php/controller/function/2/
但是当我点击下一页时,它会变为
index.php/controller/function/2/4
所以基本上打破了分页并且没有检索到结果。
我尝试了其他解决方案,例如添加IF / else语句,如果字符为空或不等于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'))
不起作用,因为只有现在才注意到当我回显该范围返回数组的结果,所以我必须循环。有什么比上面做的更好的检查方法吗?
答案 0 :(得分:1)
使用您的分页配置,无论是否指定了字母,您都将分页段设置为4。但如果我没有正确理解,那么在没有角色的情况下应该是3。
尝试这样的事情:
if(!is_numeric($character)) {
$config['uri_segment'] = 4;
$data['records'] = $this->Model->get_records_filtered($character,$config['per_page'],$this->uri->segment(4));
} else {
$config['uri_segment'] = 3;
$data['records'] = $this->Model->get_records($config['per_page'], $this->uri->segment(3));
}
$this->pagination->initialize($config);
要检查范围内的字符,可以使用
if (in_array(strtoupper($character), range('A', 'Z'))
strtoupper()是可选的。如果你想'a'匹配'A',请保留。