Создал фильтр товара, но фильтрация происходит только по одному введённому значению, а необходимо, чтобы по выбранным нескольким значениям.
Сейчас поиск происходит: Тип одежды: Куртка; Размер XXL. находит либо куртку, либо по размеру, но не находит совместный вариант.
Подскажите пожалуйста, что сделал не так ?
Код формы поиска:
<?php
if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );
if( file_exists(dirname(__FILE__).'/../../components/com_virtuemart/virtuemart_parser.php' )) {
require_once( dirname(__FILE__).'/../../components/com_virtuemart/virtuemart_parser.php' );
} else {
require_once( dirname(__FILE__).'/../components/com_virtuemart/virtuemart_parser.php' );
}
global $VM_LANG, $mm_action_url, $sess;
?>
<form action="<?php $sess->purl( $mm_action_url."index.php?page=shop.browse" )?>" method="post">
<table class="pl-1" border="0" cellspacing="0" cellpadding="0" align="left">
<tbody>
<tr>
<td>
<table style="width: 170px;" border="0" cellspacing="0" cellpadding="0" align="left">
<tbody>
<tr>
<td width="163"><input name="keyword" type="checkbox" value=" 75E" id="keyword" /> 75E</td>
</tr>
<tr>
<td width="163"><select class="inputbox" type="checkbox" name="keyword" id="keyword" size="1">
<option value='БюÑтгальтеÑ?'>БюÑтгальтеÑ?</option>
<option value='ТÑ?уÑÑ‹'>ТÑ?уÑÑ‹</option>
</select> </td>
</tr>
<tr>
<td><input name="keyword" type="checkbox" value=" 75F" id="keyword" /> 75F</td>
</tr>
<tr>
<td><input name="keyword" type="checkbox" value=" 75G" id="keyword" /> 75G</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td align="right"><input class="button" name="Search2" type="submit" value="Ðайти" /></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</form>
Фрагмент кода отвечающего за поиск из shop_browse_queries.php
// This is the "normal" search
if( !empty($keywordArr) ) {
$sq = "(";
$numKeywords = count( $keywordArr );
$i = 1;
foreach( $keywordArr as $searchstring ) {
$sq .= "\n (`#__{vm}_product`.`product_name` LIKE '%$searchstring%' OR ";
$sq .= "\n `#__{vm}_product`.`attribute` LIKE '%$searchstring%' OR ";
$sq .= "\n `#__{vm}_product`.`product_s_desc` LIKE '%$searchstring%' OR ";
$sq .= "\n `#__{vm}_product`.`product_desc` LIKE '%$searchstring%') ";
if( $i++ < $numKeywords ) {
$sq .= "\n AND ";
}
}
$sq .= ")";
$where_clause[] = $sq;
}
// Process the advanced search
elseif( !empty($keyword1Arr) ) {
$sq = "(";
$numKeywords = count( $keyword1Arr );
$i = 1;
foreach( $keyword1Arr as $searchstring ) {
switch($search_limiter) {
case "name":
$sq .= "\n `#__{vm}_product`.`product_name` LIKE '%$searchstring%' ";
break;
case "cp":
$sq .= "\n `#__{vm}_product`.`product_url` LIKE '%$searchstring%' ";
break;
case "desc":
$sq .= "\n (`#__{vm}_product`.`product_s_desc` LIKE '%$searchstring%' OR ";
$sq .= "\n `#__{vm}_product`.`attribute` LIKE '%$searchstring%')' OR ";
$sq .= "\n `#__{vm}_product`.`product_desc` LIKE '%$searchstring%')";
break;
default:
$sq .= "\n (`#__{vm}_product`.`product_name` LIKE '%$searchstring%' OR ";
$sq .= "\n `#__{vm}_product`.`attribute` LIKE '%$searchstring%') OR ";
$sq .= "\n `#__{vm}_product`.`product_url` LIKE '%$searchstring%' OR ";
$sq .= "\n `#__{vm}_category`.`category_name` LIKE '%$searchstring%' OR ";
$sq .= "\n `#__{vm}_product`.`product_sku` LIKE '%$searchstring%' OR ";
$sq .= "\n `#__{vm}_product`.`product_s_desc` LIKE '%$searchstring%' OR ";
$sq .= "\n `#__{vm}_product`.`product_desc` LIKE '%$searchstring%') ";
}
if( $i++ < $numKeywords ) {
$sq .= "\n AND ";
}
}
$sq .= ") ";
// KEYWORD 2 TO REFINE THE SEARCH
if ( !empty($keyword2Arr) ) {
$search_op= strtoupper(vmGet( $_REQUEST, 'search_op', 'AND' )) == 'AND' ? 'AND' : 'AND NOT';
$sq .= "\n $search_op (";
$numKeywords = count( $keyword2Arr );
$i = 1;
foreach( $keyword2Arr as $searchstring ) {
switch($search_limiter) {
case "name":
$sq .= "\n `#__{vm}_product`.`product_name` LIKE '%$searchstring%' ";
break;
case "cp":
$sq .= "\n `#__{vm}_product`.`product_url` LIKE '%$searchstring%' ";
break;
case "desc":
$sq .= "\n (`#__{vm}_product`.`product_s_desc` LIKE '%$searchstring%' OR ";
$sq .= "\n `#__{vm}_product`.`attribute` LIKE '%$searchstring%') ";
$sq .= "\n `#__{vm}_product`.`product_desc` LIKE '%$searchstring%')";
break;
default:
$sq .= "\n (`#__{vm}_product`.`product_name` LIKE '%$searchstring%' OR ";
$sq .= "\n `#__{vm}_product`.`attribute` LIKE '%$searchstring%')' OR ";
$sq .= "\n `#__{vm}_product`.`product_url` LIKE '%$searchstring%' OR ";
$sq .= "\n `#__{vm}_category`.`category_name` LIKE '%$searchstring%' OR ";
$sq .= "\n `#__{vm}_product`.`product_sku` LIKE '%$searchstring%' OR ";
$sq .= "\n `#__{vm}_product`.`product_s_desc` LIKE '%$searchstring%' OR ";
$sq .= "\n `#__{vm}_product`.`product_desc` LIKE '%$searchstring%')";
}
if( $i++ < $numKeywords ) {
$sq .= "\n AND ";
}
}
$sq .= "\n ) ";
}
$where_clause[] = $sq;
}