1. kategori_ozellikleri isimli bir tablo oluşturacaksın (id, kategori_id, baslik)
2. karegori_ozellikleri_karsilik isimli bir tablo oluşturacaksın (id,ozellik_id,baslik)
3. urun_ozellik tablosu oluşturacaksın (id,urun_id,karsilik_id)

ürünü eklerken hangi kategoride ise 1 numaralı tablodan o özellikleri ve karşılıklarını checkbox olarak getirip seçtireceksin.
kategori sayfanda o kategoriye ait özellikleri sol tarafa getirip seçtirip post edeceksin.

daha sonra sql sorgusu ile filtre yapacaksın örnek:

select * from urunler u INNER JOIN urun_ozellik uo ON uo.urun_id=u.id WHERE uo.karsilik_id IN (karslik_id_1,karslik_id_2,karslik_id_3 )

Bu sorgu tek başına çalışmaz birde having yapman lazım

$kac = $heaving-1 (filtrelemeden kaç özellik seçtirdiysen o kadar -1 );

$sorgu .=" HAVING COUNT(uo.urun_id)>$kac ";

Bu kadar kolay gelsin.