• User Attivo

    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


  • User Attivo

    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!


  • User Attivo

    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