- Home
- Categorie
- Coding e Sistemistica
- PHP
- Problemi calcolo prezzo tra date diverse
-
Problemi calcolo prezzo tra date diverse
Ciao a tutti, ho un problema di calcolo prezzo tra diverse date, io ho la tabella camere composta cosi':
Codice:id
int(11) NOT NULL AUTO_INCREMENT,
idhotel
int(11) DEFAULT NULL,
room
int(11) DEFAULT NULL,
data_start
date DEFAULT NULL,
data_end
date DEFAULT NULL,
price
int(11) DEFAULT NULL,
PRIMARY KEY (id
)all'interno della tabella ho inserito il prezzo per diverse date poi ho questo codice per calcolare il prezzo in base alla data scelta ad esempio dal 20/05/2014 al 30/05/2014 la camera Twin costa 50,00
la query di ricerca è questa:
[PHP]
$arival = $_POST['start'];
$departure= $_POST['end'];
$hotel_id = $_POST['id'];$giorni = 1; // differenza tra data di arrivo e partenza
$result = mysql_query (" SELECT idhotel, room, price, ($giorni * price) as total
FROM rooms
WHERE '$arival' BETWEEN ($arival AND $departure) GROUP by idhotel, room");
$res = mysql_query($result);
if (!$res) {
echo "Errore query : " . $result . "<br/>" . mysql_error();
} [/PHP]
quando effettuo una ricerca ad esempio dal 21 maggio al 22 maggio (1 notte) invece di uscire 50,00 mi esce un messaggio con scritto: Errore query :
Query was empty . mi sapete dire dove sto sbagliando?
Grazie
-
In SQL, BETWEEN è il demonio xD non utilizzarlo per le date, piuttosto usa
WHERE data_start <= DATE(".$arival.") AND data_end >= DATE(".$departure.")
E dimmi se funziona!
-
io grazie perla risposta purtroppo non va, il prezzo per la camera mi rimane vuoto!!
Edit:
ho fatto alcune modifiche e la query funziona in parte diciamo, questa è la tabella "rooms"
+---------+------+-------+-------+----+--------------+--------------
| hote_id | room_type | default_price | data_start |data_end |
+---------+------+-------+-------------+--------------+--------------
| 1 | Twin | 50 | 2014-05-10 | 2014-05-20
| 1 | Twin | 100 | 2014-05-21 | 2014-05-30
+---------+------+-------+-------+----+--------------+--------------e questo e' la modifica alla query:
[PHP]$from = $_POST['from'];
$to = $_POST['to'];
$hotel_id = $_POST['hid'];$dal = new DateTime($from);
$al = new DateTime($to);
$intervallo = $al->diff($dal);$giorni = 1;
$query="SELECT hotel_id, room_type, default_price, ($giorni * default_price) as total
FROM rooms
WHERE '$from' BETWEEN '$from' AND '$to'
GROUP BY
hotel_id, room_type";$result=mysql_query($query); while($row=mysql_fetch_array($result)){ $ratestable[$row['room_type']][0]=$row['total']; [/PHP]
facendo una ricerca ad es. dal 12 al 13 la query come sopra l'ho scritta mi da come risultato 50 invece se tolgo
[PHP]GROUP BY
hotel_id, room_type[/PHP]
mi da come risultato 100 cioe o mi calcola il prezzo solo sulla prima riga o solo sulla seconda. mi sapresti dire come risolvere?
Grazie