开发者

Pagination using multiple searcing criteria in codeigniter

Im trying to implement pagination using multiple searching criteria. Supposed I Have student table. I also use pagination when the list 开发者_如何转开发of student displayed. The pagination link is. site_url . '/student/page/'; so I use $config['uri_segment'] = 1; so the pagination link will be

<a href="http://mysite/index.php/student/page/0">1</a>
<a href="http://mysite/index.php/student/page/1">2</a>

and son.

After that I wanna search student data using 3 searching criteria implemented using textfield.

id  name    address.

user can search by id or name or address or combination of the three criteria. the url become

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

and son.

but I use get method for searching. and while trying to search using the search criteria field the url become

href="http://mysite/index.php/student/page/1?id=1&name=a&address=b

the problem occurred when I try create pagination based on criteria. because the pagination link have contain query string i don't know how to create become

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

or do you have a best practice to solve this problem ?


Hi phill .... I have try your suggestion.

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

the url become id/001/name/a/address/canada. I use $this->uri->uri_to_assoc() function to get key and value of the segment.

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

but while there some searching criteria that not included while searching. let say, the user only search by name and address. the array become $array = array('id' => '', 'name' => 'a', 'address' => 'canada'); and the url id/name/a/address/canada the assoc array become

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

the assoc array is not disorganized again. so I can't get the right value of the assoc array. I think i will set the identifier to the searching criteria if not included. supposed i put #.

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

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

How about that ... ? or if there are another best practice ?


For that I would use $this->uri->uri_to_assoc():

index.php/user/search/name/joe/location/UK/gender/male

Using this function you can turn the URI into an associative array with this prototype:

[array]
(
    'name' => 'joe'
    'location' => 'UK'
    'gender' => 'male'
)

See the full documentation here.

You can still use page/1 as the first lot then have /name/whatever afterwards.


Actualy, we can create pagination with multiple and unlimited criteria. Read here http://dengkul.com/2010/07/08/codeigniter-pagination-with-multiple-unlimited-searching-criteria/

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜