A ver si se entiende la idea de qué es crear condiciones dinámicamente:
Código PHP:
Ver original<?php
...
//capturo las variables enviadas desde el formulario via POST
$provincia=$_POST["provincia"];
$poblacion=$_POST["poblacion"];
$gustos=$_POST["gustos"];
$sql="SELECT * ";
$sql.="FROM directorio ";
$sql.="WHERE 1 ";
// El "1" es para no complicar la construccion del WHERE
if(isset($provincia) && $provincia != "") {
$sql.=" AND provincia='".$provincia."' ";
}
if(isset($poblacion) && $poblacion != "") {
$sql.=" AND localidad='".$poblacion."' ";
}
if(isset($gustos) && $gustos != "") {
$sql.=" AND preferencias='".$gustos."' ";
}
// cerramos con el ORDER BY:
$sql.=" ORDER BY nombre";
/// El resto del código, incluyendo validacion de que consulte bien
...
?>