Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 34
  1. #1

    Verifica disponibilità camere in un sistema di prenotazione

    Ciao a tutti !
    Mi sono arenata su un problema con una verifica di disponibilita' per delle camere di un albergo.

    Ho una tabella di un db che si chiama prenotazioni ed e' cosi' composta:

    id | id_camera | data | stato
    ----------------------------------------------
    1 | 3 | 2013-05-19 | 1
    ----------------------------------------------
    2 | 3 | 2013-05-20 | 1
    ----------------------------------------------
    3 | 3 | 2013-05-21 | 1
    ----------------------------------------------
    4 | 7 | 2013-07-15 | 1
    ----------------------------------------------
    5 | 7 | 2013-07-16 | 1

    ecc..ecc....

    In pratica, salvo il giorno prenotato (o in prenotazione) e lo lego all'id della camera.


    Come posso fare per verificare la disponibilita' delle camere in base al giorno di arrivo e quello di partenza ?

    Avevo pensato una cosa del genere ma purtroppo non riesco a farla andare:


    Codice PHP:

    // ARRIVO DA FORM IN CUI HO SELEZIONATO DATA DI ARRIVO E DATA DI PARTENZA
    $dal $_POST['from'];
    $al $_POST['to'];

    // CALCOLO QUANTI GIORNI SONO E RICONVERTO DATA IN ANNO/MESE/GIORNO
    $date_from_parts explode('/'$dal);
    $date_to_parts explode('/'$al);
    $ts_from mktime(000$date_from_parts[1], $date_from_parts[0], $date_from_parts[2]);
    $ts_to mktime(000$date_to_parts[1], $date_to_parts[0], $date_to_parts[2]);
    for (
    $x $ts_from$x <= $ts_to$x += 86400){

        
    $days[] = date('Y-m-d'$x);
        
    }
                                                
    for (
    $i 0$i <= count($days)-1$i++) {
        
        
    // SCORRO TUTTI I GIORNI CHE VANNO DA FROM A TO
        //echo $days[$i]."
    ";
        
        
    $queryDisponibilita= "SELECT FROM prenotazioni WHERE data $days[$i]";
        
    $resultDisponibilita = mysql_query($queryDisponibilita);
        
    $righeDisponibilita = mysql_num_rows($resultDisponibilita);

        if (mysql_num_rows(
    $resultDisponibilita) != 0) {
        
            while (
    $arrayDisponibilita = mysql_fetch_assoc($resultDisponibilita)) {
                
                // STAMPO LE CAMERE DISPONIBILI
                echo "
    $arrayDisponibilita[id_camera]
    ";
            
            }
        
        }    else {
        
            echo "
    nessun appartamento disponibile per il periodo prescelto...";
        
        } 

    Purtroppo non riesco proprio a farlo funzionare, eppure, verificare se effettivamente il giorno e' nella tabella prenotazioni (e se non c'e' ovviamente la camera e' disponibile) mi sembra la soluzione migliore !

    In ogni modo, grazie 1000.

  2. #2
    ma il campo data nel db cos'è?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    E' il giorno che e' stato prenotato.
    Se prenoto dal:
    20/04/2013 al 24/04/2013

    Nella tabella prenotazione si aggiungeranno 4 righe (o record).
    20/04/2013
    21/04/2013
    22/04/2013
    23/04/2013
    24/04/2013
    ecc..ecc..

    Questo perche' lo utilizzo in un sistema di calendario (il classico calendario con i giorni prenotati selezionati in un altro colore e non piu' selezionabili).


  4. #4
    Non sarebbe più comodo il classico da - a che ti permetterebbe di inserire un solo record piuttosto che n?
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    No, come detto prima, devo utilizzare una tabella ralizzata cosi' perche' utilizzo la tabella prenotazione in un sistema con calendari, devo inserire le date cosi' in modo da poter visualizzare anche giorno per giorno (se per esempio marzo non ha nessuna data inserita vorra' dire che marzo non ha nessuna prenotazione), diciamo che e' stata una aggiunta richiesta a quello che gia' avevo fatto e percio' non posso fare grosse modifiche a quello che gia' c'e' e che funziona bene.


  6. #6
    Originariamente inviato da _Micky_73
    E' il giorno che e' stato prenotato.
    Se prenoto dal:
    20/04/2013 al 24/04/2013

    Nella tabella prenotazione si aggiungeranno 4 righe (o record).
    20/04/2013
    21/04/2013
    22/04/2013
    23/04/2013
    24/04/2013
    ecc..ecc..

    Questo perche' lo utilizzo in un sistema di calendario (il classico calendario con i giorni prenotati selezionati in un altro colore e non piu' selezionabili).

    scusa mi sono espresso male: IL CAMPO DATA NEL DB DI CHE TIPO E'? DATETIME?VARCHAR? Mi chiedo: perchè hai fatto quell'accrocchio di codice strano che hai postato invece di usare le funzioni sulle date del tuo database?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  7. #7
    Si, e' un campo DATE.

    Stavo facendo delle prove, tipo verificare se ogni giorno e' compreso nell'intervallo di tempo che intercorre da data di arriva a data di partenza.
    Arrivo con un un formato di data gg/mm/aaaa e lo converto in aaaa/mm/gg perche' sul db sono salvate cosi.
    Poi calcolo i giorni tra, per esempio:
    il 20 aprile e 23 aprile,
    e sono 20, 21, 22, 23,
    poi, verifico se sono presenti nella tabella prenotazioni.

    Se appunto, mi spiegate/aiutate a sbrogliare questa matassa sarei la donna piu' felice del mondo...:-)

  8. #8
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    Devi avere 2 tabella una che contiene tutta la lista delle camere e l'altra che contiene la lista delle prenotazioni e poi esegui questa sql
    Codice PHP:
    select camera_id from camere
    WHERE 
    ((SELECT count(*) FROM prenotazioni WHERE prenotazione_idcamera camera_id AND prenotazione_data BETWEEN '$data1' AND '$data2') = 0
    camera_id è il codice univoco della camera nella tabella "camere"
    prenotazione_idcamera è l'id della camera contenuto nella tabella prenotazione

    Appena testato, funziona.
    Ti restituisce le camere disponibili che non contengono nessuna prenotazione nell'intervallo di date..

    Vale comunqe il discorso di
    satifal Non sarebbe più comodo il classico da - a che ti permetterebbe di inserire un solo record piuttosto che n?
    Che mestiere difficile.....essere da soli ancora di più

  9. #9
    Si, la tabella camere c'e', ora provo subito e ti faccio sapere !!

    Grazieeee !!

  10. #10
    Originariamente inviato da Fractals87
    Vale comunqe il discorso di satifal
    non che questo metodo sia scomodo o sia più complicato dell'altro, alla fine si somigliano abbastanza
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

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.