Fai così per la query di default:
Codice PHP:
SELECT * FROM table WHERE 1 = 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 = 1 AND categoria = 1
Codice PHP:
SELECT * FROM table WHERE 1 = 1 AND categoria = 1 AND articolo = 5
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.