Visualizzazione dei risultati da 1 a 5 su 5

Discussione: booking

  1. #1

    booking

    Ciao a tutti, sto sviluppando una specie di booking per un appartamento in affitto per turisti.
    Mi serve un consiglio su come impostare php/mysql... ho una tabella prenotazioni con i vari campi tra cui data-arrivo e data-partenza che sono di tipo "date".

    Quando andrò a fare una ricerca di disponibilità in base alle date di arrivo e partenza inseriti dall'utente devo assicurarmi che siano liberi, praticamente una query nella tabella prenotazioni per vedere se in quelle date l'appartamento è libero.

    Qualcuno ha già esperienza e mi può suggerire la sintassi di questa query? Magari per voi è banale ma per me no :-)
    Grazie
    "Link2me.it: Professional network e Marketplace"
    www.link2me.it

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    Potrebbe sfuggirmi qualcosa per cui cerco di spiegarti il percorso logico che potresti seguire.
    Supponiamo che $i e $f siano rispettivamente data inizio e data fine per cui servono gli appartamenti liberi.
    Siano inoltre "di" e "df" i nomi dei campi data inizio e data fine sul database.
    Ti servono tutti gli appartamenti i cui id non si trovano in prenotazioni le cui date:
    -contengono l'intervallo che va da $i a $f;
    -collidono con l'intervallo che va da $i a $f.
    In "sql-ese":
    -di<$i and df>$f (prenotazioni che contengono l'intervallo richiesto)
    -di between $i and $f (collisione con prenotazioni preesistenti)
    -df between $i and $f (collisione con prenotazioni preesistenti)

    La query sarebbe qualcosa del tipo:
    codice:
    select * from appartamenti where id not in (
        select idappartamento from prenotazioni where
            (di < $i and df > $f) or
            (di between $i and $f) or
            (df between $i and $f)
    )
    Ripeto potrebbe sfuggirmi qualcosa.

  3. #3
    Ciao, grazie per il tuo aiuto, ho risolto come mi hai consigliato e una parte di booking è andata. Adesso ho qualche dubbio sulla parte del calcolo prezzo per un determinato periodo. Ho una tabella dove ci sono le stagioni (alta, media, bassa) con la data di inizio e di fine, poi un'altra tabella dove ci sono i prezzi della stanze in relazione con le stagioni (id_stagione, id_stanza, prezzo).
    Per le date vorrei mettere semplicemente giorno e mese perchè sono le stesse per ogni anno, il problema è poi come fare la query che cerca in questa tabella, ovvero confrontare una data (check-in/check-out) con dei campi che non sono date ma solo gg-mm.
    Spero di essermi spiegato :-)
    "Link2me.it: Professional network e Marketplace"
    www.link2me.it

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    in php potresti ottenere da una data il giorno dell'anno ovvero un numero che va da 0 a 365 che devi incrementare di 1.

    es.
    codice:
    $data = date("z", strtotime($data)) + 1;
    E vedere se questa data è compresa in una delle 3 stagioni usando in mysql la funzione DAYOFYEAR($campodata), non conosco alla perfezione questa funzione quindi documentati meglio.

    Comunque il controllo per vedere a quale stagione appartiene $data sarebbe qualcosa del tipo:
    codice:
    ... where $data between DAYOFYEAR(dis) and DAYOFYEAR(dfs)
    Con dis e des rispettivamente campo inizio stagione e campo fine stagione

  5. #5
    Grazie ancora, non conoscevo questa funzione di mysql.
    "Link2me.it: Professional network e Marketplace"
    www.link2me.it

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2021 vBulletin Solutions, Inc. All rights reserved.