Beh... penso che dovresti fare un controllo delle variabili passate dalla form con il controllo isset(), quindi usare degli IF per compilare al volo la parte finale della query.
Per capirci:
Codice PHP:
$campo1 = $_GET['campo1'];
$campo2 = $_GET['campo2'];
$campo3 = $_GET['campo3'];
$where_SQL = "";
if (isset($campo1)) {
$where_SQL .= "campo1 = '$campo1' AND ";
}
if (isset($campo2)) {
$where_SQL .= "campo2 = '$campo2' AND ";
}
if (isset($campo3)) {
$where_SQL .= "campo3 = '$campo3' AND ";
}
if (isset($campo4)) {
$where_SQL .= "campo4 = '$campo4' AND ";
}
// togli l'ultimo AND
$where_SQL = substr($where_SQL, -1, 4);
// aggiungi la stringa così composta
// a quella della query SQL
$sql = "SELECT * from immobili WHERE $where_SQL";
// debug
echo $sql;
Non l'ho provato, ma dovrebbe andare... ad ogni modo, ti ho messo anche una ECHO per vedere se la query è giusta.
In ultimo, la scelta della condizione AND o OR non deve essere condizionata dal fatto che la query funzioni o meno, ma da quello cui serve la query stessa.
Se c'è l'AND significa che per avere un risultato devono essere rispettate TUTTE le condizioni della query.