|
|
|
| Здравствуйте. Делаю сайт-каталог. В нём подразделы, для каждого подраздела настраиваются свои фильтры. Параметры для фильтров получаю из адресной строки в виде: site.ru/index.php?filter=[2][433][61]
Для каждой единицы товара есть поле 'filters', в котором хранятся id фильтров, под которые они попадают, в таком виде: [433][61] и т.д.... Поиск ведется по этому полю через LIKE.
<?php
// Разбираем GET
preg_match_all("|\[(.*)\]|iU", $_GET["filter"], $out);
for($i=0; $i<count($out[1]); $i++)
{
$vzapros.= " `filters` LIKE '%[".$out[1][$i]."]%' OR";
}
// Формируем запрос, отрезаем 3 лишних символа
$yeszapros = substr($vzapros, 0, -3);
// Выводим найденные товары
$bd_t = mysql_query("SELECT * FROM `tovarplus` WHERE$yeszapros");
while($vt=mysql_fetch_array($bd_t))
{
echo $vt["nm"].'<br>';
}
?>
|
Меня интересует, имеет ли такая конструкция право на жизнь и что нужно изменить?
Заранее спасибо! | |
|
|
|
|
|
|
|
для: grafen
(13.04.2012 в 09:50)
| | имеет ли такая конструкция право на жизнь
крайне сомнительно
что нужно изменить?
скорее всего всю логику | |
|
|
|
|
|
|
|
для: Valick
(13.04.2012 в 09:54)
| | Не могу найти, как это делается по-нормальному... Можете поделиться ссылкой? Или советом, в какую сторону смотреть. Я только до этого додумался и это работает. | |
|
|
|
|
|
|
|
для: grafen
(13.04.2012 в 12:12)
| | Для каждой единицы товара есть поле 'filters', в котором хранятся id фильтров, под которые они попадают
нужно не поле, а отдельная таблица связи | |
|
|
|