Ну точнее проблема не в них, а непосредственно в поиска по полям типа multicheckbox и multiselect.
Короче есть у меня такие поля в объявлениях. При наполнении объявления они имеют тип checkbox, а для поиска выводятся в виде выпадающего списка.
Так вот проблема в том что они в той части компонента, которая отвечает за поиск объявлений, обрабатываются как-то неправильно.
Подробнее:
поле имеет значение rus, en, ua
пытаюсь искать по значению rus
включил отладку в Joomla и в запросе вижу вот такую вот картину:
SELECT adext.*, a.*, p.name as parent, p.id as parentid, c.name as cat, c.id as catid,u.username as user,u.name as fullname
FROM acatf_adsmanager_ads as a
LEFT JOIN acatf_paidsystem_ads as adext
ON a.id = adext.id
INNER JOIN acatf_adsmanager_adcat as adcat
ON adcat.adid = a.id
LEFT JOIN acatf_users as u
ON a.userid = u.id
INNER JOIN acatf_adsmanager_categories as c
ON adcat.catid = c.id
LEFT JOIN acatf_adsmanager_categories as p
ON c.parent = p.id
WHERE 1
[b]AND (a.ad_poliglot LIKE '%,r,%' )[/b]
AND a.published = 1
AND c.published = TRUE
AND c.id IN (10,1,2,3,4,5,6,7,8,9)
GROUP BY a.id
ORDER BY a.date_created DESC ,a.id DESC
LIMIT 0, 20
AND (a.ad_poliglot LIKE '%,r,%' )почему то в запросе нет запрошенyого значения rus, а только буковка r
полез разбираться, нашел место где формируется этот запрос
находиться это счастье в файле /administrator/components/com_adsmanager/models/field.php
и выглядит этот участок кода вот так:
foreach($fields as $fsearch){
switch($fsearch->type)
{
case 'multicheckbox':
case 'multiselect':
$value = JRequest::getVar( $fsearch->name, array() );
for($i = 0,$nb=count($value);$i < $nb;$i++)
{
if ($i == 0)
$search .= " AND (";
if (version_compare(JVERSION,'1.7.0','<')) {
$search .= "a.$fsearch->name LIKE '%,".$this->_db->getEscaped($value[$i],true).",%'";
}else{
$search .= "a.$fsearch->name LIKE '%,".$this->_db->escape($value[$i],true).",%'";
}
if ($i < $nb - 1)
$search .= " OR ";
else
$search .= " )";
}
break;
...
Может кто пояснит мне, почему в запрос не попадает значение, выбранное в выпадающем списке, а на его месте оказывается буковка r?
Забивал приведенный выше запрос непосредственно в phpMyAdmin, и если буковку r заменить на rus то все норм ищется.
В чем проблема? Помогите! !