CakePHP: автоматический поиск по заранее выбранному значению раскрывающегося списка.Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 CakePHP: автоматический поиск по заранее выбранному значению раскрывающегося списка.

Сообщение Anonymous »

У меня есть форма поиска, которая имеет поле ввода текста, три флажка и предварительно выбранное значение по умолчанию в раскрывающемся списке на основе пользовательских данных из базы данных.
например. Если пользователь живет в сообществе 1, то в раскрывающемся списке в качестве значения по умолчанию выбирается 1.

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

Теперь в контроллере я попытался получить значение сообщества из другого места, кроме раскрывающегося списка:

if ($this->request->is('post)) {
//Perform normal search with the other input fields included.
} else {
//Do the filtered search only by commune value, which I get from a function.
}


Проблема в том, что нумерация страниц не будет работать. Это ожидаемо, поскольку при нумерации страниц используется GET. Когда я пытаюсь изменить страницу, это не сообщение, и условия поиска снова будут установлены только на значение значения сообщества, и я получаю ошибку в операторе SQL.

Извините, если мое объяснение выше немного сумбурно, но вам придется меня извинить, поскольку английский не является моим родным языком.

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

Выполнение поиска

$conditions = $this->setSearchConditions($this->request->data);
$res = $this->paginate('Ad', array($conditions));
$this->set('res', $res);

//limit is set in public $paginate variable


Настройка условий поиска

private function setSearchConditions($data) {

$conditions = array();
// $this->log('Search: DATA', 'debug');
//$this->log($data, 'debug');

if ($this->request->is('post)) { //Submit-button is clicked, performing full search
//$this->log('Dette er en post', 'debug');

if ($data['Ad']['searchField']) { //Text searchfield is not empty, adding title or description to search criteria
$this->log('Søkefeltet er ikke tomt', 'debug');
$str_search = '%' . $data['Ad']['searchField'] . '%';
$conditions[] = array(
'OR' => array(
'Ad.title LIKE' => $str_search,
'Ad.description LIKE' => $str_search
)
);
}//if

if ($data['Ad']['commune_id']) { // Commune dropdown is not empty, adding commune_id to search criteria
$conditions[] = array(
'Ad.commune_id' => $data['Ad']['commune_id']
);
}//if

if ($data['Ad']['type_id']) { // Type checkboxes are not empty, adding type_id to search criteria
$orArray = array();
foreach ($data['Ad']['type_id'] as $type) {
$orArray[] = array('Ad.type_id' => $type);
}
$conditions[] = array(
'OR' => $orArray
);
}//if
} else {
$conditions[] = array(
'Ad.commune_id' => $this->getDefaultCommune();
):
}

return $conditions;
}


Подробнее здесь: https://stackoverflow.com/questions/149 ... down-value
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»