Как реализовать разбиение на страницы с использованием нескольких критериев поиска в codeigniter - PullRequest
0 голосов
/ 22 января 2010

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

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


Чтобы решить эту проблему, я пытаюсь использовать $this->uri->uri_to_assoc(). Сначала я создаю массив asocc для нумерации страниц.

$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 ассоциативный массив становится

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

Ассоциированный массив снова не дезорганизован. поэтому я не могу получить правильное значение массива Assoc. Я думаю, что я буду устанавливать идентификатор для критериев поиска, если не включены. Предположим, я положил #.

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

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

Как насчет этого ...? или есть еще лучшие практики?

Спасибо

Ответы [ 2 ]

0 голосов
/ 09 февраля 2010

Когда я использую uri_to_assoc, у меня всегда есть массив по умолчанию, поэтому в моем приложении я всегда могу получить требуемый параметр, даже если он отсутствует в uri

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

Теперь я могу безопасно получить доступ к $param_array['cat'] и $param_array['page'], даже если uri не содержит этот параметр.

Я всегда использую ruri_to_assoc и ruri_segment, поэтому дополнительный параметр всегда начинается с 3-го uri сегмента.

0 голосов
/ 23 января 2010

Мне всегда было немного больно иметь дело с Ури в ci.
Есть ли способ, которым вы можете установить какое-то значение по умолчанию для ваших значений, если пользователь не включает это в свой поиск? или даже не включить ключ? так что он будет возвращать что-то вроде

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

и т.д ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...