per calcolare la differenza tra le due date puoi fare cosi
PHP:
$dataarrivo = "2014-05-05";
$date_end = "2014-05-08";
$dal = new DateTime($dataarrivo);
$al = new DateTime($date_end);
$intervallo = $dal->diff($al);
$giorni = $intervallo->d;
$query = "SELECT idhotel, room, price, ($giorni * price) as total
FROM rooms
WHERE '$dataarrivo' BETWEEN data_start AND data_end";
ma devi avere la versione di php maggiore o pari alla 5.3.0
Quando fai l'echo della query deve restituirti questo
Codice:
SELECT idhotel, room, price, (3 * price) as total FROM rooms WHERE '2014-05-05' BETWEEN data_start AND data_end
ho risolto il problema adesso la query funziona, ho cosi' cambiato:
PHP:
$from = $_GET['from'];
$to = $_GET['to'];
$hotel_id = $_GET['hid'];
$dal = new DateTime($from);
$al = new DateTime($to);
$intervallo = $al->diff($dal);
$giorni = $intervallo->d;
$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";
adesso pero' ho un'altro problema, nella tabella rooms, ho messo dal 10 al 20 50,00 euro e dal 21 al 30 100 euro se effettuo una ricerca dal 23 al 28 maggio (5 giorni) invece di uscire 500 euro mi da 1250, sinceramente non ho capito che calcolo fa
allora Criric fortunatamente sei gentile ad aiutarmi e scusami se insisto ma vorrei risolvere il problema, ho corretto il tutto (che casino che sto combinando ) la query funziona ma non mi da il giusto risultato
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'];
e questa e' 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-20 | 2014-05-10
+---------+------+-------+-------+----+--------------+--------------
facendo una ricerca ad es. dal 12 al 13 la query come sopra l'ho scritta mi dcosi' come risultato 50 invece se tolgo
PHP:
GROUP BY
hotel_id, room_type
mi da come risultato 100 cioe o mi calcola il prezzo solo sulla prima rigo o solo sulla seconda. mi sapresti dire come risolvere?
Grazie
Ho corretto l'inserimento nella tabella camere ed ho cambiato la query come mi hai suggerito ma non capisco perchè mi esce sempre come risultato 0 ho provato anche in questo modo:
PHP:
WHERE data_start <= DATE(".$from.") AND data_end >= DATE(".$to.")
Ciao Criric ho fatto come mi hai detto questo e' il messaggio della query:
Codice:
SELECT idhotel, room, price, (3 * price) as total FROM rooms WHERE '2014-05-15' BETWEEN data_start AND data_end && id = 1
Errore query : SELECT idhotel, room, price, (3 * price) as total FROM rooms WHERE '2014-05-15' BETWEEN data_start AND data_end && id = 1
ti posto anche una foto della tabella rooms giusto per
Ciao Criric,
ho notato che se aggiungo piu' camere allo stesso hotel con le stesse date mi fa una somma totale, ad esempio, ho una camera doppia dal 15 al 20 maggio a 50 euro ed una camea tripla dal 15 al 20 maggio a 100 euro.
se faccio una ricerca dal 16 al 17 maggio una notte mi da come risultato 150 euro cioe' la somma delle due camere invece di due risultati separati.
Grazie
Il valore lo inserisci nel campo room ?
Le scelta ti arriva sempre dal form in post?
dovra aggiugnere una condizione alla query
PHP:
$tipocamera = $_POST["tipocamera"];
$query = "SELECT idhotel, room, price, ($giorni * price) as total
FROM rooms
WHERE '$dataarrivo' BETWEEN data_start AND data_end &&
idhotel = $hotel_id && room = '$tipocamera'";
SELECT idhotel, room, price, (2 * price) as total FROM rooms WHERE '2014-05-15' BETWEEN data_start AND data_end && idhotel = 2 && room = ''
0 Prezzo camera €
Notice: Undefined index: room in\index.php on line 8
SELECT idhotel, room, price, (2 * price) as total FROM rooms WHERE '2014-05-15' BETWEEN data_start AND data_end && idhotel = 2 && room = ''
0 Prezzo camera €
PHP:
$tipocamera = $_POST["room"];
il problema sta nel tipologia di camera che non la trova