revtail

Еще раз на эту тему (фильтр поиска)

Recommended Posts

Есть форма поиска standart_search_form

есть мною добавленная таблица в data типа selext_box

с параметрами 

{prodam~~Продажа}
{arenda~~Аренда}
{kuplu~~Куплю}
{snimu~~Сниму}
 
Хочу вывести это фильтр для пооиска.
как тут
http://www.myned.ru/(Действие)
 
Это читал
и всю ветку форму тоже
 
Что делать? куда смотреть ?
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

читали - это хорошо, так и что? не получается ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
<?phpclass Template_Search extends SiteBill {    public function getParams(){        $params=array();        if(''!==$this->getRequestValue('action_d')){	$params['action_d'] = (int)$this->getRequestValue('action_d');	}        return $params;    }    public function run(){        $where_array=array();        $params=$this->getParams();        require_once(SITEBILL_DOCUMENT_ROOT.'/apps/system/lib/model/model.php');        $data_model = new Data_Model();        $data_model_array = $data_model->get_kvartira_model(false);        $data_model_array = $data_model_array['data'];		if(isset($params['action_d']) && isset($data_model_array['action_d'])){	$where_array[]=DB_PREFIX.'_data.action_d='.$params['action_d'];	}        return array(            'where'=>$where_array,            'params'=>$params	        );    }}?>

ip таблицы - action_d

куда смотреть ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ip таблицы - action_d

куда смотреть ?

У вас не работает это?

Не совсем вопрос понятен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да, не работает

В форму поиска добавляю:

<select name="action_d" class="form-control"><option value="prodam"> Продажа</option><option value="arenda"> Аренда</option><option value="kuplu"> Куплю</option><option value="snimu"> Сниму</option></select>

файлик в шаблоне main/template_search.php

<?phpclass Template_Search extends SiteBill {    public function getParams(){        $params=array();        if(''!==$this->getRequestValue('action_d')){	$params['action_d'] = (int)$this->getRequestValue('action_d');	}        return $params;    }    public function run(){        $where_array=array();        $params=$this->getParams();        require_once(SITEBILL_DOCUMENT_ROOT.'/apps/system/lib/model/model.php');        $data_model = new Data_Model();        $data_model_array = $data_model->get_kvartira_model(false);        $data_model_array = $data_model_array['data'];		if(isset($params['action_d']) && isset($data_model_array['action_d'])){	$where_array[]=DB_PREFIX.'_data.action_d='.$params['action_d'];	}        return array(            'where'=>$where_array,            'params'=>$params	        );    }}?>

при выборе. фильтрация не происходит

Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

<option value="prodam"> Продажа</option>
<option value="arenda"> Аренда</option>
<option value="kuplu"> Куплю</option>
<option value="snimu"> Сниму</option>

 

Тут у вас prodam, arenda....

 

А тут $params['action_d'] = (int)$this->getRequestValue('action_d'); вы эти значения приводите к цлому числу - в данном случае к нулю, в который превращаются все слова. И в поиск в запрос даете уже ноль, а не " prodam, arenda...." . Вот и не ищет.

 

Либо убрать нафик  prodam, arenda.... и заменить их нормальными цифрами

Либо в проверке $params['action_d'] = (int)$this->getRequestValue('action_d'); изменить на условие совпадения с одним из допустимых значений.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сейчас фильтрация работает. заменил prodam на цифры.

Проблемы вылезла другая. В админке на странице всех объявлений. не отображаются объявления которые имеют значение в action_d.

Что подскажете ?

Выявил прямую зависимость от наличия файла main/template_search.php или активности поля в списке форм ( т.е. если включить мое action_d, толь фильтрация начинает работать, на главной все отображается правильно. А вот админке эти объявления исчезают)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

На какие именно цифры заменили текстовые названия?

 

Этот кусок

if(''!==$this->getRequestValue('action_d')){    $params['action_d'] = (int)$this->getRequestValue('action_d');    }

так и остался без изменений?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

На какие именно цифры заменили текстовые названия?

 

Этот кусок

if(''!==$this->getRequestValue('action_d')){    $params['action_d'] = (int)$this->getRequestValue('action_d');    }

так и остался без изменений?

{1~~Продажа}{2~~Аренда}{3~~Куплю}{4~~Сниму}

и да этот кусок так и остался без изменений

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
if(''!==$this->getRequestValue('action_d')){    $params['action_d'] = (int)$this->getRequestValue('action_d');    }

замените на 

if(0!==(int)$this->getRequestValue('action_d')){    $params['action_d'] = (int)$this->getRequestValue('action_d');    }

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас