Non capisco bene il senso del codice.
Prima scrivi così

Codice PHP:
if ($_REQUEST["from"]<>'' and $_REQUEST["to"]<>''
{
$sql "SELECT * FROM ".$SETTINGS["data_table"]." WHERE from_date >= '".mysql_real_escape_string($_REQUEST["from"])."' AND from_date <= '".mysql_real_escape_string($_REQUEST["to"])."'".$search_string.$search_city;

il che è palesemente sbagliato, visto che infili nella query direttamente ciò che ricevi dall'input dell'utente ($_REQUEST["from"] e $_REQUEST["to"]). Invece qui l'input lo devi trasformare. Ti avevo spiagato come in qualche post fa.

Poi di seguito scrivi

Codice PHP:
if (isset($_POST['tipo3']) && $_POST['tipo3']) $query .= "data BETWEEN $data1 AND $data2 OR "
A parte che non so cosa significa tipo3.. qua sembri appenderci un'altra ricerca sempre sulle date.. Non capisco.