CI类分页链接麻烦

时间:2014-02-27 00:57:59

标签: php codeigniter pagination

这是我目前的代码。 附:我正在编辑这个,尝试解决这个问题,同时等待有人在这里解决它。我不太清楚为什么会这样。

分页:

$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'))不起作用,因为只有现在才注意到当我回显该范围返回数组的结果,所以我必须循环。有什么比上面做的更好的检查方法吗?

1 个答案:

答案 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',请保留。