Php 如何在codeigniter中使用多个搜索条件实现分页

Php 如何在codeigniter中使用多个搜索条件实现分页,php,codeigniter,frameworks,Php,Codeigniter,Frameworks,我正在尝试使用多个搜索条件实现分页。 假设我有学生桌。当显示学生列表时,我也使用分页。 分页链接为站点\ url。'/学生/页/'

我正在尝试使用多个搜索条件实现分页。 假设我有学生桌。当显示学生列表时,我也使用分页。 分页链接为<代码>站点\ url。'/学生/页/'$config['uri_segment']=1; 因此,分页链接将是

<a href="http://mysite/index.php/student/page/0">1</a>
<a href="http://mysite/index.php/student/page/1">2</a>
用户可以通过id、姓名、地址或三个条件的组合进行搜索。 url变为

http://mysite/index.php/student/page/0
href=http://mysite/index.php/student/page/1
还有儿子

但我使用get方法进行搜索。当尝试使用搜索条件字段进行搜索时,url变为

href="http://mysite/index.php/student/page/1?id=1&name=a&address=b
尝试基于条件创建分页时出现问题。因为分页链接包含查询字符串 我不知道如何创造

href="http://mysite/index.php/student/page/0?id=1&name=a&address=b
href="http://mysite/index.php/student/page/1?id=1&name=a&address=b
或者你有解决这个问题的最佳实践吗


为了解决这个问题,我尝试使用
$this->uri->uri\u To\u assoc()
。首先,我为分页链接创建数组asocc

$array = array('id' => '001', 'name' => 'a', 'address' => 'canada');
url变为
id/001/name/a/address/canada
。我使用
$this->uri->uri\u to\u assoc()
函数获取段的键和值

array (
    id => 001,
    name=>a,
    address=>canada
)
但是,尽管存在一些搜索条件,但在搜索时未包含这些条件。比方说,用户只按名称和地址搜索。数组变为
$array=array('id'=>'','name'=>'a','address'=>'canada')和url
id/name/a/address/canada
assoc数组变为

array (
    id => name,
    a=>address,
    canada=>
)
assoc数组不会再次被破坏。因此,我无法获取assoc数组的正确值。 我想如果没有包含,我会将标识符设置为搜索条件。假设我把
#
放进去

那……怎么样?或者是否还有其他最佳实践


谢谢

我总是觉得在ci中处理uri有些痛苦。
如果用户没有将默认值作为搜索的一部分,是否可以为您的值设置某种默认值?甚至不包括钥匙?所以它会返回类似于

id/10/name/false/address/canada

那你可以

$uri = $this->uri->uri_to_assoc();

$id = array_key_exists("id", $uri) ? $uri['id'] : false;
$id = $id == 'false' ? false : $id;
$query .= $id ? "AND id = $id" : "";

等等。

当我使用
uri\u to\u assoc
时,我总是有一个默认数组,因此在我的应用程序中,我总是可以获得所需的参数,即使它在
uri
中缺失

$param_default = array('cat','page');
$param_array = $this->uri->ruri_to_assoc(3, $param_default);
现在我可以安全地访问
$param_数组['cat']
$param_数组['page']
,即使uri不包含该参数

我总是使用用户
ruri\u到\u assoc
ruri\u段
,因此额外的参数总是从第三个
uri
段开始

id/10/address/canada
$uri = $this->uri->uri_to_assoc();

$id = array_key_exists("id", $uri) ? $uri['id'] : false;
$id = $id == 'false' ? false : $id;
$query .= $id ? "AND id = $id" : "";
$param_default = array('cat','page');
$param_array = $this->uri->ruri_to_assoc(3, $param_default);