CodeIgniter birden searcing kriterleri kullanarak sayfalama nasıl uygulanacağı

2 Cevap php

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>

ve oğlu.

3 arama kriterleri kullanarak bu I wanna arama öğrenci verileri Textfield kullanılarak uygulanır sonra.

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

ve oğlu.

ama arama için get yöntemi kullanın. ve arama kriterleri alanını kullanarak arama çalışırken url haline

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

veya bu sorunu çözmek için iyi bir uygulama var mı?


Bu sorunu çözmek için, ben $this->uri->uri_to_assoc() kullanmayı deneyin. Önce pagination link dizi asocc oluşturun.

$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');

Buna ne demeli ...? ya da başka bir iyi uygulama varsa?

Teşekkürler

2 Cevap

I've always found it somewhat a pain to deal with uri's in ci.
Is there a way you can set a default of some kind fveya your values if the user doesn't include that as part of their search? veya even not include the key? so it would return something like

id/10/name/false/address/canada

veya

id/10/address/canada

o zaman olabilir

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

vs ..

Benim uygulamada, ben her zaman, gerekli parametreyi alabilirsiniz uri_to_assoc, ben her zaman, varsayılan bir dizi var kullandığınızda o uri eksik bile

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

Şimdi güvenle uri bu parametre içermiyorsa bile erişebilirsiniz $param_array['cat'] ve $param_array['page'] olabilir.

Ben her zaman kullanıcı ruri_to_assoc ve ruri_segment, bu nedenle ekstra parametre her zaman 3 uri segmentinde başlar.