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

时间:2010-01-22 05:26:57

标签: php codeigniter frameworks

我尝试使用多个搜索条件实现分页。 假设我有学生表。当学生列表显示时,我也使用分页。 分页链接是。 site_url . '/student/page/';所以我使用$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>

和儿子。

之后,我想使用文本字段实现的3个搜索条件搜索学生数据。

id  name    address.

用户可以按ID或名称或地址或三个标准的组合进行搜索。 网址变成了

http://mysite/index.php/student/page/0
href=http://mysite/index.php/student/page/1

和儿子。

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

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_to_assoc()。首先,我为分页链接创建数组asocc。

$array = array('id' => '001', 'name' => 'a', 'address' => 'canada');
网址变成了 id/001/name/a/address/canada。我使用$this->uri->uri_to_assoc()函数来获取段的键和值。

array (
    id => 001,
    name=>a,
    address=>canada
)

但是在搜索时没有包含一些搜索条件。比方说,用户只按名称和地址搜索。阵列变成了 $array = array('id' => '', 'name' => 'a', 'address' => 'canada');和网址id/name/a/address/canada assoc数组变为

array (
    id => name,
    a=>address,
    canada=>
)

assoc数组不会再次混乱。所以我无法得到assoc数组的正确值。 我想如果不包括在内,我会将标识符设置为搜索条件。假设我放#

if isset($_GET['id']) then
$id = '#'
else 
$id = $_GET['id']

$array = array('id' => $id, 'name' => 'a', 'address' => 'canada');

那怎么样......?或者如果还有其他最佳做法?

由于

2 个答案:

答案 0 :(得分:0)

我总是觉得在ci中与uri打交道有点痛苦 有没有办法可以为您的值设置某种默认值,如果用户不将其作为搜索的一部分包括在内?甚至不包括钥匙?所以它会返回类似

的东西
id/10/name/false/address/canada

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" : "";

等...

答案 1 :(得分:0)

当我使用uri_to_assoc时,我总是有一个默认数组,所以在我的应用程序中,我总是可以得到所需的参数,即使它从uri

中丢失了
$param_default = array('cat','page');
$param_array = $this->uri->ruri_to_assoc(3, $param_default);

现在即使uri不包含该参数,我也可以安全地访问$param_array['cat']$param_array['page']

我始终是用户ruri_to_assocruri_segment,因此额外参数始终位于第3 uri段。