Для решения задачи, необходимо определиться с терминами.
Пусть "пользователь выбрал производителя" означает выбор из некоего select в форме поиска.
Пусть "пользователь выбрал размер" - это числовое значение в поле формы.
Пусть "отфильтровался товар" - это результат показываемый пользователю после нажатия кнопки "Поиск".
Тогда на стороне сервера в php можно сделать примерно так:
$where[]=1; <- это чтобы фильтровать по всем товарам и не сломать при этом запрос.
if (isset($_GET['madeby']))
{
если мы что-то выбрали в списке производителей...
$where[]="t.madeby='".(int)$_GET['madeby']."'";
}
if (isset($_GET['sizeHi']))
{
если мы что-то указали в размерах - то добавляем еще одно условие, пускай оно в джойн-таблице.
$where[]="parenttable.size<='".(int)$_GET['sizeHi']."'";
}
формируем запрос, собирая все условия в одну строку через "and"
$request = "select * from sometable t left join parenttable on (parenttable.parent_id=t.id) where ". implode(" and ",$where);
и смотрим что получилось.
var_dump($request);
запрос выполняем, результат показываем.
Это не самый оптимальный, но самый простой вариант который должен бы направить вас в "нужную сторону мысли"