ho modificato qualcosina, questa e' la query attuale con il relativo risultato ed errore:

Codice PHP:
$query_offerte="SELECT id_offerta, titolo, DATE_FORMAT(valida_da, '%d/%m/%Y') AS valida_da_ita, DATE_FORMAT(valida_fino, '%d/%m/%Y') AS valida_fino_ita, minimo_notti, prezzo, prezzo_come, trattamento, id_albergo, mezzo_di_trasporto FROM tbl_offerte where

( month(valida_da)=
$mese and month(valida_fino)=$mese and datediff(valida_fino,valida_da)>=$durata )
or
( month(valida_da)=
$mese and month((date_add(valida_da,interval $durata day)) = $mese )
or
( month(valida_fino)=
$mese and month((date_sub(valida_fino,interval $durata day))=$mese)";

//se l'utente ha inserito anche la durate applichiamo il filtro

if($durata=="2"){
$query_offerte .= " AND prezzo_come<=5 ";
}
if(
$durata=="3"){
$query_offerte .= " AND prezzo_come>=6 AND prezzo_come<=9 ";
}
if(
$durata=="4"){
$query_offerte .= " AND prezzo_come>9 ";
}

$query_offerte .= "ORDER by prezzo/prezzo_come";

echo
"$query_offerte

"

Se cerco per il mese di febbraio un soggiorno da 6 a 9 notti questo e' il risultato di quella query:

SELECT id_offerta, titolo, DATE_FORMAT(valida_da, '%d/%m/%Y') AS valida_da_ita, DATE_FORMAT(valida_fino, '%d/%m/%Y') AS valida_fino_ita, minimo_notti, prezzo, prezzo_come, trattamento, id_albergo, mezzo_di_trasporto FROM tbl_offerte where ( month(valida_da)=2 and month(valida_fino)=2 and datediff(valida_fino,valida_da)>=3 ) or ( month(valida_da)=2 and month((date_add(valida_da,interval 3 day)) = 2 ) or ( month(valida_fino)=2 and month((date_sub(valida_fino,interval 3 day))=2) AND prezzo_come>=6 AND prezzo_come<=9 ORDER by prezzo/prezzo_come

l'errore che esce sotto e'

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER by prezzo/prezzo_come' at line 7

ma non capisco perche'