Разбиение на страницы с использованием нескольких критериев поиска в codeigniter

Я пытаюсь реализовать разбиение на страницы, используя несколько критериев поиска. Предположим, у меня есть студенческий стол. Я также использую разбиение на страницы, когда отображается список учеников. Ссылка на пагинацию есть. 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.

пользователь может осуществлять поиск по идентификатору, имени, адресу или комбинации трех критериев. 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

или у вас есть лучшие практики для решения этой проблемы?


Привет Филл .... Я попробовал ваше предложение.

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

URL становится 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');, а URL-адрес 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');

Как насчет этого ... ? или если есть другая передовая практика?


person Adi Sembiring    schedule 21.01.2010    source источник


Ответы (2)


Для этого я бы использовал $this->uri->uri_to_assoc():

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

Используя эту функцию, вы можете превратить URI в ассоциативный массив с этим прототипом:

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

См. полную документацию здесь.

Вы по-прежнему можете использовать page/1 в качестве первого лота, а затем /name/whatever.

person Phil Sturgeon    schedule 21.01.2010
comment
Привет ..., фил. Я попробовал ваше предложение. но у меня есть проблема. Я отредактировал свой вопрос. Надеюсь, вы можете проверить мой вопрос и дать мне решение проблемы. Спасибо - person Adi Sembiring; 22.01.2010
comment
Просто убедитесь, что вы не помещаете ключи в URL-адрес, если они не имеют значения. - person Phil Sturgeon; 22.01.2010

На самом деле мы можем создать пагинацию с несколькими и неограниченными критериями. Читайте здесь http://dengkul.com/2010/07/08/codeigniter-pagination-with-multiple-unlimited-searching-criteria/

person Samuel Prasetya    schedule 08.07.2010