Bueno, solo tienes que controlar si los campos han sido seleccionados:
Código PHP:
$campo1 = $_POST['campo1'];
$campo2 = $_POST['campo2'];
$campo3 = $_POST['campo3'];
$where = array();
if($campo1) array_push($where, "campo1='$campo1'");
if($campo2) array_push($where, "campo2 LIKE '%$campo2%'");
if($campo3) array_push($where, "(campo3<'$campo3' OR campo3>'$campo3')");
//...
$where_string = implode(" AND ", $where);
if($where_string) $where_string = "WHERE ".$where_string;
// utilizas este where_string en la query
$query = "SELECT * FROM tabla $where";
Asì en la query solo pones los datos que han sido seleccionados. Si no seleccionas nada pues te salen todos lo registros.
Asi' puede funccionar?