Ciao.

>for($i=0;$i<count($lista_parole);$i++) {
> $str.="titolo LIKE '%$lista_parole[$i]%' OR ";
>}
i) ti suggerisco di usare l'istruzione foreach, è più comoda
foreach($lista_parole as $parola)
$str.="titolo LIKE '%$parola%' OR ";

ii) è strano che $str.="titolo LIKE '%$lista_parole[$i]%' OR "; non ti dia errore,
gli elementi di un array andrebbero incapsulati quando usati all'interno di stringhe. Percui:
> $str.="titolo LIKE '{%$lista_parole[$i]}%' OR ";

>$str=substr($str,0,(strlen($str)-3));
più semplicemente
$str=substr($str,0,-3);


presuppongo che tu abbia valorizzato la select così:
<option value="meno">meno di 150.000</option>
<option value="oltre">oltre 150.000</option>

usa l'indentramento quano scrivi codice, ti tornerà utile.

>$prez=$_POST[prez];
>if ($prez=="oltre") {
> $max="$prez > 150000";
> if ($prez > 150000)
se arrivi qui vuol dire che
$prez=="oltre"
quindi non ha senso comparare una strinca con un intero

> $sql.="prezzo LIKE '%$max%'";
stai chiedendo al tu db ti selezionare le righe per cui
il campo prezzo contiene al proprio interno la sottostringa $max
prova con
$sql.="prezzo > 150000 ";


> }elseif ($prez=="meno") {
> $meno="$prez < 150000";
> if ($prez > 150000)
> $sql.="prezzo LIKE '%$meno%'";
>}
come sopra




>$mqu=$_POST[mquadri];
>if ($mqu=="max"){
>$max="$mqu>150";
>if ($mqu>150)
>$sql.="mq LIKE '%$max%'";
>}
>elseif ($mqu=="min")
>{
>$min="$mqu<150";
>if ($mqu<150)
>$sql.="mq LIKE '%$min%'";
>}
come sopra