così sembra risolto ma ho dovuto limitare ad 1 la query:

codice:
$tiempoin = mktime() - 86400; 
$query = "SELECT * FROM prenotazioni WHERE (($dayin BETWEEN data_in AND data_out) AND ($dayout BETWEEN data_in AND data_out) OR ($dayin < data_in) AND ($dayout BETWEEN data_in AND data_out) OR ($dayin BETWEEN data_in AND data_out) AND ($dayout > data_out) OR ($dayin < data_in) AND ($dayout > data_out)) AND id_app=$_POST[app_id] LIMIT 1"; 
$result = mysql_query($query, $db); 
$num_results = mysql_num_rows($result); 
if ($num_results == "") 
{ 
echo "libero";
else 
{
while($row=mysql_fetch_array($result))
{ 
if ($row[ora_prenotazione] < $tiempoin AND $row[status] == "pending") 
{ 
echo "libero";
} 
else 
{ 
echo "occupato";
}
}