Fai così per la query di default:

Codice PHP:
SELECT FROM table WHERE 1 
e poi per ogni criterio di scelta impostato dall'utente vi "appendi" una nuova clausola es:

"AND clausola"

Codice PHP:
SELECT FROM table WHERE 1 AND categoria 

Codice PHP:
SELECT FROM table WHERE 1 AND categoria AND articolo 
ecc.

Il trucco se vedi sta proprio nel creare una clausola fittizzia WHERE 1 = 1 all'inizio in modo da poter aggiungere altre clausole senza impazzire con gli AND.

Spero ti sia stato utile.