Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    22

    Script per controllo disponibilità camere albergo

    Ciao a tutti,
    sono giorni che mi sto scervellando su uno script per me essenziale, ma senza giungere ad alcun risultato.

    Sto scrivendo un applicazione per la gestione delle prenotazioni per un albergo (o meglio, un rifugio alpino), ma ho dei problemi con le funzioni per il controllo della disponibilità.
    Durante la fase di prenotazione da parte del cliente, vorrei che il sistema effettui un controllo circa la disponibilità di quella camera in quella data (o range di date).

    Attualmente ho una tabella 'sistemazioni', così strutturata:
    id | nome | quantita

    id è univoco per ogni sistemazione, 'nome' è il nome in chiaro, 'quantita' è il numero di sistemazioni esistenti.


    Un'altra tabella, 'prenotazioni', è così strutturata:
    id | data_arrivo | data_partenza | sistemazione

    le date sono nel formato gg/mm/aaaa
    l'id è univoco per la prenotazione. 'sistemazione' corrisponde all''id' della sistemazione nella relativa tabella.


    Avete qualche idea su come effettuare un controllo di disponibilità per un range di date?
    Non voglio una cosa complessa, basta uno script che mi stampi il numero di sistemazioni disponibili.
    Grazie a tutti.

    p.s.: il db è MySQL
    CARPEDIEM

  2. #2
    Utente di HTML.it L'avatar di homerbit
    Registrato dal
    Dec 2005
    residenza
    Roma
    Messaggi
    1,380
    ti basta verificare con mysql_num_rows una sistemazione non allocata per il tuo periodo di riferimento
    ..un esempio al volo:
    Codice PHP:
     $sql SELECT FROM prenotazioni where (tua_data data_arrivo) AND (tua_data data_partenza);

    if (
    mysql_num_rows($sql) > ){echo "tutto occupato";} 
    If you think your users are idiots, only idiots will use it. DropBox

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    22
    Non vorrei sbagliarmi, ma mi sembra troppo riduttivo quell'esempio.

    Innanzi tutto hai usato come riferimento una singola data. Con un range di date il discorso, a mio avviso, diventa assai più complesso.

    Inoltre quello script controlla tra tutte le sistemazioni, e non solo quella fornita.
    Andrebbe poi aggiunta una funzione per verificare quante sono le sistemazioni totale, e quante quelle attualmente disponibili (ma a questo ci penso io).


    Ti torna il mio ragionamento?
    Grazie infinitamente per la disponibilità.
    CARPEDIEM

  4. #4
    Utente di HTML.it L'avatar di homerbit
    Registrato dal
    Dec 2005
    residenza
    Roma
    Messaggi
    1,380
    Avete qualche idea su come effettuare un controllo di disponibilità per un range di date?
    io ho ragionato così: se la tua_data (sarebbe quella di arrivo) è compresa in un range di date "occupate" non hai disponibilità! e non interessa nient'altro per definire la disponibilità o meno di una camera o sbaglio?

    Inoltre quello script controlla tra tutte le sistemazioni, e non solo quella fornita.
    questo punto mi era sfuggito nel tuo messaggio precedente, e cmq se hai a disposizione la sistemazione (chi la fornisce?) non c'è alcun problema, basta modificare la select

    ..la mia è solo un'idea dettata da quel che ho capito del tuo problema
    If you think your users are idiots, only idiots will use it. DropBox

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    22
    Non è un ragionamento facile, cerco di farlo al meglio.
    Se data_arrivo non è compresa tra le date presenti nelle prenotazioni, vuol dire che in quel giorno ci sono sistemazioni libere. Viceversa, se fosse compresa sarebbe tutto occupato.
    Ma se data_arrivo è "disponibile" (ovvero fuori dal range), non è detto che lo sia anche data_partenza.
    Andrebbe aggiunta una seconda clausola.

    Faccio un esempio per chiarire meglio ciò che sto per dire: mettiamo di avere le seguenti data_arrivo e data_partenza in 'prenotazioni':
    1. 12/07/2012 15/07/2012
    2. 10/07/2012 12/07/2012
    3. 08/07/2012 17/07/2012
    4. 11/07/2012 14/07/2012

    Se io cerco una sistemazione dal 11/07/2012 al 14/07/2012, lo script che mi hai dato tu mi individua le prenotazioni occupate numero 2, 3 e 4, sebbene la 1 sia ugualmente non disponibile durante il range di date.
    Se invece mettiamo che data_arrivo e data_partenza non devono essere comprese tra quelle presenti, cercando una sistemazione dal 06/07/2012 al 20/07/2012 ottengo come risposta che è tutto libero, quando invece è l'esatto contrario.


    E' un ragionamento tutt'altro che facile, sia da capire che da esporre.
    Spero di essere stato il più chiaro possibile.
    Grazie ancora, a presto.
    CARPEDIEM

  6. #6
    Utente di HTML.it L'avatar di homerbit
    Registrato dal
    Dec 2005
    residenza
    Roma
    Messaggi
    1,380
    condivido in pieno sono stato superficiale

    occorre inserire il controllo anche sulla data di partenza:
    la tua data di arrivo e la tua data di partenza non devono ricadere nell'intervallo "di occupazione" della sitemazione scelta (credo che fin qui ci siamo)
    If you think your users are idiots, only idiots will use it. DropBox

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    22

    Esatto, fin li ci siamo.
    Il punto è che se entrambi sono esterni ad un certo range di date presenti, il sistema restituisce che la camera è libera.
    Ma se è prenotata dal 12/07/2012 al 15/07/2012, mi lascia prenotare, per esempio, dal 10/07/2012 al 16/07/2012 essendo valori esterni.
    Cosa che invece non dovrebbe permettermi di fare.
    CARPEDIEM

  8. #8
    per risolvere dovresti assegnare sul db dei campi occupati con ciascuno la data non disponibile. Quindi inserendo la richiesta anche in un range esterno il sistema ti avverte che le date centrali sono occupate.

    E modificare la query di ricerca ovviamente con inner join tra le due tabelle

  9. #9
    la query è questa:

    codice:
    SELECT * FROM prenotazioni where (tua_data_arrivo >= data_partenza) AND (tua_data_partenza <= data_partenza);
    se la query non restituisce nessun valore allora hai delle camere libere

    detto questo forse ha ragione seokey ed è meglio gestire le prenotazioni giorno per giorno e non per periodo.


    Infine riguardo a questo:

    Originariamente inviato da @alfa38
    le date sono nel formato gg/mm/aaaa
    Perchè?

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    22
    [QUOTE]Originariamente inviato da seokey
    per risolvere dovresti assegnare sul db dei campi occupati con ciascuno la data non disponibile. Quindi inserendo la richiesta anche in un range esterno il sistema ti avverte che le date centrali sono occupate.
    E' proprio quello a cui stavo lavorando, ma credevo che ne risultasse un lavoro fatto male, e con un sacco di record.


    Originariamente inviato da seokey
    E modificare la query di ricerca ovviamente con inner join tra le due tabelle
    Ti spiacerebbe gentilmente farmi un esempio?
    Grazie per la risposta.


    Originariamente inviato da raven74

    codice:
    SELECT * FROM prenotazioni where (tua_data_arrivo >= data_partenza) AND (tua_data_partenza <= data_partenza);
    se la query non restituisce nessun valore allora hai delle camere libere
    No, non funziona nemmeno così.
    Facciamo degli esempi:
    $tua_data_arrivo=11
    $tua_data_partenza=14
    data_arrivo=5
    data_partenza=10

    (11 >= 10) AND (14 <= 10)
    Non potrà mai essere vero, sebbene non ci siano prenotazioni in mezzo a quelle date.

    Altro esempio:
    $tua_data_arrivo=02
    $tua_data_partenza=04
    data_arrivo=5
    data_partenza=10

    (02 >= 10) AND (04 <= 10)
    Nemmeno in questo caso potrà mai essere vero, sebbene non ci siano prenotazioni in mezzo a quelle date.




    Originariamente inviato da raven74
    Perchè?
    Perchè sono nel formato più utilizzato e comodo per essere letto dagli utenti.
    Adesso sto lavorando ad una tabella con le date singole per ogni notte (questa non deve essere letta dagli utenti) e sto salvando in formato aaaa-mm-gg

    Grazie ancora a tutti per la disponibilità!
    CARPEDIEM

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 © 2025 vBulletin Solutions, Inc. All rights reserved.