LiveInternetMail.ru
Форум русской поддержки Joomla!® CMS
27.05.2012, 17:11:43 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 1.7 FAQ Joomla 1.5 FAQ Joomla 1.0 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор Тема: не работает поиск по пунктам с Check Box (Single) и (Multiple) (РЕЩЕНО)  (Прочитано 532 раз)
0 Пользователей и 1 Гость смотрят эту тему.
rentony
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 77



« : 02.02.2012, 20:52:26 »

в расширенном поиске игнорируются настройки поиска по пунктам Check-box, по всему остальному поиск идет, а по этим пунктам ничего, хоть ставишь галочку, хоть нет, показывает всё
подскажите с чем это может быть связанно, и если это стандартная проблема адсменеджера, можно ли это исправить?
« Последнее редактирование: 07.02.2012, 14:15:48 от rentony » Записан
rentony
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 77



« Ответ #1 : 03.02.2012, 12:06:20 »

почитал по форуму, наткнулся на много записей что в стандартной сборке адсменеджера, не работает толком Check Box (Multiple), но про Silngle ни слова...
Записан
rentony
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 77



« Ответ #2 : 03.02.2012, 13:39:42 »

Проверил Multiple, тоже как то криво работает((
Записан
Alex89
Давно я тут
****

Репутация: +115/-1
Offline Offline

Пол: Мужской
Сообщений: 386


Joomlaman :)


« Ответ #3 : 03.02.2012, 20:00:15 »

надо обмозговать...
Записан
rentony
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 77



« Ответ #4 : 03.02.2012, 20:10:46 »

уже второй день мозгую(( желательно починить Multiple конечно, т.к. это очень важная деталь AdsManager'a... он как то криво запрос поиска отправляет по ходу
Записан
Alex89
Давно я тут
****

Репутация: +115/-1
Offline Offline

Пол: Мужской
Сообщений: 386


Joomlaman :)


« Ответ #5 : 04.02.2012, 00:12:30 »

Убил сцуко столько времени, чтобы починить пока single checkbox, он сцуко такая ни в какую не хотел считывать состояние галочки (отмечена, не отмечена), всё время передавалась пустая строка...
и какого же сцуко было моё удивление когда залез в исходник страницы расширенного поиска - в теге name у checkbox'a вместо имени поля был его заголовок, вот бл... слов не хватает
Итак, открываем файлик \components\com_adsmanager\helpers\field.php ищем функцию showFieldSearch, в теле функции меняем строки
Код:
case 'checkbox':
     if ($value == 1)
          echo "<input class='inputbox' type='checkbox' name='".$field->title."' value='1' checked='checked' />\n";
     else
          echo "<input class='inputbox' type='checkbox' name='".$field->title."' value='1' />\n";
     break;
на
Код:
case 'checkbox':
     if ($value == 1)
          echo "<input class='inputbox' type='checkbox' name='".$field->name."' value='1' checked='checked' />\n";
     else
          echo "<input class='inputbox' type='checkbox' name='".$field->name."' value='1' />\n";
     break;
Открываем файлик \administrator\components\com_adsmanager\models\field.php, ищем функцию getSearchFieldsSql, в теле функции находим
Код:
case 'checkbox':
меняем на
Код:
case 'checkbox':
     $value = JRequest::getVar( $fsearch->name, "");
     if ($value==1) $search .= " AND a.$fsearch->name = ".$this->_db->Quote($value);
     else $search .= " AND a.$fsearch->name <> 1";
     break;
Всё, поиск по галкам работает, мультигалки завтра посмотрю
Записан
rentony
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 77



« Ответ #6 : 04.02.2012, 08:51:12 »

хех) мда) мне вот интересно, вроде умные люди делаю адсменеджер, а такие глупые косяки оставляют)
Записан
rentony
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 77



« Ответ #7 : 04.02.2012, 08:53:23 »

мне вот это тоже странно показалось)
Код:
case 'checkbox':
но в PHP не мастер еще, ну и подумал может ссылается это на нижнюю строку там...
Записан
Alex89
Давно я тут
****

Репутация: +115/-1
Offline Offline

Пол: Мужской
Сообщений: 386


Joomlaman :)


« Ответ #8 : 05.02.2012, 19:25:57 »

ну а с мультигалками дело обстоит сложнее, в зависимости от сайта можно сделать поиск с точным совпадением отмеченных значений и значений в БД либо с частичным совпадением... какой способ нужен Вам?
Записан
rentony
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 77



« Ответ #9 : 06.02.2012, 07:31:34 »

с точным совпадением желательно
Записан
rentony
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 77



« Ответ #10 : 06.02.2012, 13:51:52 »

Alex89, поиск по Single работает так сейчас) - если не ставить ни какие галочки, то выводит объявления ТОЛЬКО без галочек, если есть галочки, то он их не выводит... по идеи должен выводить же все, покапаюсь сейчас сам, мож допру (в чем сильно сомневаюсь), но расчитываю на Вашу светлую голову)
Записан
rentony
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 77



« Ответ #11 : 06.02.2012, 14:28:01 »

всё) разобрался)
просто из файла "\administrator\components\com_adsmanager\models\field.php"
из функции getSearchFieldsSql удалил одну строчку, было так:
Код:
case 'checkbox':
     $value = JRequest::getVar( $fsearch->name, "");
     if ($value==1) $search .= " AND a.$fsearch->name = ".$this->_db->Quote($value);
     else $search .= " AND a.$fsearch->name <> 1";
     break;
стало так:
Код:
case 'checkbox':
     $value = JRequest::getVar( $fsearch->name, "");
     if ($value==1) $search .= " AND a.$fsearch->name = ".$this->_db->Quote($value);
     break;
Записан
Alex89
Давно я тут
****

Репутация: +115/-1
Offline Offline

Пол: Мужской
Сообщений: 386


Joomlaman :)


« Ответ #12 : 07.02.2012, 09:29:38 »

Такс, для мультигалок поменять нужно только поисковый запрос
в файле \administrator\components\com_adsmanager\models\field.php меняем в функции getSearchFieldsSql кусок кода с такого:
Код:
case 'multicheckbox':
case 'multiselect':
$value = JRequest::getVar( $fsearch->name, array() );
for($i = 0,$nb=count($value);$i < $nb;$i++)
{
if ($i == 0)
$search .= " AND (";
$search .= "a.$fsearch->name = ".$this->_db->Quote(",".$value[$i].",");
if ($i < $nb - 1)
$search .= " OR ";
else
$search .= " )";
}
break;
на такой:
Код:
case 'multicheckbox':
case 'multiselect':
$value = JRequest::getVar( $fsearch->name, array() );
for($i = 0,$nb=count($value);$i < $nb;$i++)
{
$val .= ','.$value[$i];
if ($i == $nb-1)
$val .= ",";
}
$search .= " AND a.$fsearch->name = ".$this->_db->Quote($val);
break;
Всё!  Cheesy
Записан
rentony
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 77



« Ответ #13 : 07.02.2012, 14:15:25 »

урра!))
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Рейтинг@Mail.ru Rambler Top100 Powered by SMF 1.1.16 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet