Lo que estas buscando se llama 
WHERE Clause el buscador no es mas que un simple formulario (tan adornado como te guste) que envia parametros  a un script php que los recibe, valida, mete en un sql en la clausula where la ejecuta y retorna los resultados. 
Piensa esto, si el tipo te dijera: "Quiero un listado de todas la propiedades, sin buscador, que liste todo lo que tengo" ¿Tendrias algun problema en hacerlo? Si la respuesta es si, aun no estas  a la altura de desarrollar una web de este tipo, te falta mucho por estudiar (o quizas no tanto 

 ) . Si la respuesta es no, entonces implementar un buscador no tendra ninguna dificultad para ti. 
Imaginemos que tu tabla de propiedades tiene estos campos: 
nombre
tipo: (1=alquiler, 2=venta)
canton:(id_canton)
precio 
y ademas tienes las otras dos:
cantones:
id_canton
id_provincia
descripcion 
provincias:
id_provincia
descripcion 
y quieres hacer el mismo filtro que tienes en esa web:    
Código PHP:
Ver original- $sql = 'SELECT propiedades.nombre FROM propiedades p INNER JOIN cantones c ON p.id_canton=c.id_canton INNER JOIN provincias pr ON pr.id_provincia=c.id_provincia WHERE 1 '.($_POST['tipo'] ? ' AND p .tipo ='.$_POST['tipo'] : '').($_POST['canton'] ? 'AND p .id_canton ='.$_POST['canton'] : ($_POST['provincia'] ? 'AND c id_provincia ='.$_POST['provncia'] : '')).($_POST['precio_desde'] ? 'AND p .precio >='.$_POST['precio_desde'] : '').($_POST['precio_hasta'] ? 'AND p precio ='.$_POST['precio_hasta'] : ''); 
Seria algo masomenos asi, lo resuelve todo mysql, con php unicamente debes validar los parametros.