Allora io uso questo sistema.


Query principale :
codice:
$query = "Select * from nome tabella Where ".$condizioni_query;
Nel $condizioni_query vai ad aggiungere i vari dati

Codice PHP:
<?
$condizioni_query 
1;
if(isset(
$_POST['villa'])){ $condizioni_query .= " and villa LIKE '".$_POST['villa']."'";}
if(isset(
$_POST['regione'])){ $condizioni_query .= " and regione LIKE '".$_POST['regione']."'";}
if(isset(
$_POST['citta'])){ $condizioni_query .= " and citta LIKE '".$_POST['citta']."'";}
?>
In pratica tu peschi tutte le select che ci sono, se lui le setta bene andrà ad aggiungerle alla variabile, altrimenti non le inserisce

Nota bene, prima di tutto indichi $condizioni_query = 1 perchè cosi se non cerca nulla la query verrà eseguita su tutti i record senza darti problemi