Pagina 2 di 10 primaprima 1 2 3 4 ... ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 97
  1. #11
    Utente di HTML.it
    Registrato dal
    Apr 2011
    residenza
    Arezzo
    Messaggi
    194
    Quote Originariamente inviata da harry80 Visualizza il messaggio
    Per il DTS, quando dici "nell'ultimo mese basta prendere il giorno di out", per ultimo mese cosa intendi?
    Qui mi sono spiegato male, secondo me comunque funziona, nel senso che se sei a cavallo di due mesi, dell'ultimo mese considera come notti il giorno di calendario di uscita - 1.


    Quote Originariamente inviata da harry80 Visualizza il messaggio
    E quando si è a cavallo di 2 anni, come distinguerli?
    Questo chedo sia automatico, o meglio, bisogna vedere il resto della tua applicazione come lavora, ma se hai un check-in il 30/12 per 7 notti, credo sia automatico che finisci nell'anno nuovo


    Quote Originariamente inviata da harry80 Visualizza il messaggio
    Idee invece per quello che dicevo per calcolare ciclicamente per più prenotazioni presenti nel DB e calcolare quindi giorni prenotati e giorni disponibili per ogni mese di un anno?
    Anche qui tutto dipende da come imposti il resto del programma.
    Per esempio potresti aggiornare un campo "disponibilità" in un db ogni volta che hai una prenotazione
    Riccardo Sadocchi
    Microsoft MCP C#

  2. #12
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Allora... ecco al momento come conto solo il numero delle prenotazioni...

    codice:
    <?php
    // richiamo lo script responsabile della connessione a MySQL
    include "connessione.php";
    
    
    // esecuzione query numero delle prenotazioni presenti nel DB
    $query_prenotazioni  = "SELECT * FROM prenotazioni";
    $result_prenotazioni = mysql_query($query_prenotazioni) or die (mysql_error());
    
    
    // numero delle prenotazioni presenti nel DB
    $numero_prenotazioni = mysql_num_rows($result_prenotazioni);
    
    
    
    
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    
    
    // esecuzione query numero delle prenotazioni 2016 presenti nel DB
    $query_prenotazioni_2016  = mysql_query("SELECT count(*) AS conteggio FROM prenotazioni WHERE SUBSTRING(checkin, 1, 4) = '2016'");
    $result_prenotazioni_2016 = mysql_fetch_row($query_prenotazioni_2016);
    
    
    // numero delle prenotazioni 2016 presenti nel DB
    $numero_prenotazioni_2016 = mysql_result($query_prenotazioni_2016, 0);
    
    
    
    
    
    
    // esecuzione query numero delle prenotazioni 2016 presenti nel DB - Suite 01
    $query_prenotazioni_2016_suite_01  = mysql_query("SELECT count(*) AS conteggio FROM prenotazioni WHERE SUBSTRING(checkin, 1, 4) = '2016' AND suite = 'Suite 01'");
    $result_prenotazioni_2016_suite_01 = mysql_fetch_row($query_prenotazioni_2016_suite_01);
    
    
    // numero delle prenotazioni 2016 presenti nel DB - Suite 01
    $numero_prenotazioni_2016_suite_01 = mysql_result($query_prenotazioni_2016_suite_01, 0);
    
    
    
    
    
    
    // esecuzione query numero delle prenotazioni 2016 presenti nel DB - Suite 02
    $query_prenotazioni_2016_suite_02  = mysql_query("SELECT count(*) AS conteggio FROM prenotazioni WHERE SUBSTRING(checkin, 1, 4) = '2016' AND suite = 'Suite 02'");
    $result_prenotazioni_2016_suite_02 = mysql_fetch_row($query_prenotazioni_2016_suite_02);
    
    
    // numero delle prenotazioni 2016 presenti nel DB - Suite 02
    $numero_prenotazioni_2016_suite_02 = mysql_result($query_prenotazioni_2016_suite_02, 0);
    
    
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    
    
    // esecuzione query numero delle prenotazioni 12-2016 presenti nel DB
    $query_prenotazioni_12_2016  = mysql_query("SELECT count(*) AS conteggio FROM prenotazioni WHERE SUBSTRING(checkin, 1, 7) = '2016-12'");
    $result_prenotazioni_12_2016 = mysql_fetch_row($query_prenotazioni_12_2016);
    
    
    // numero delle prenotazioni 12-2016 presenti nel DB
    $numero_prenotazioni_12_2016 = mysql_result($query_prenotazioni_12_2016, 0);
    
    
    
    
    
    
    // esecuzione query numero delle prenotazioni 12-2016 presenti nel DB - Suite 01
    $query_prenotazioni_12_2016_suite_01  = mysql_query("SELECT count(*) AS conteggio FROM prenotazioni WHERE SUBSTRING(checkin, 1, 7) = '2016-12' AND suite = 'Suite 01'");
    $result_prenotazioni_12_2016_suite_01 = mysql_fetch_row($query_prenotazioni_12_2016_suite_01);
    
    
    // numero delle prenotazioni 12-2016 presenti nel DB - Suite 01
    $numero_prenotazioni_12_2016_suite_01 = mysql_result($query_prenotazioni_12_2016_suite_01, 0);
    
    
    
    
    
    
    // esecuzione query numero delle prenotazioni 12-2016 presenti nel DB - Suite 02
    $query_prenotazioni_12_2016_suite_02  = mysql_query("SELECT count(*) AS conteggio FROM prenotazioni WHERE SUBSTRING(checkin, 1, 7) = '2016-12' AND suite = 'Suite 02'");
    $result_prenotazioni_12_2016_suite_02 = mysql_fetch_row($query_prenotazioni_12_2016_suite_02);
    
    
    // numero delle prenotazioni 12-2016 presenti nel DB - Suite 02
    $numero_prenotazioni_12_2016_suite_02 = mysql_result($query_prenotazioni_12_2016_suite_02, 0);
    
    
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    
    
    
    
    // chiudo la connessione a MySQL
    mysql_close($connessione);
    ?>
    Come dicevo, non sono pratico ed infatti non riesco a ciclare la funzione del mese e sono quindi costretto a moltiplicare per ogni mese ed ogni suites, qui ho riportato solo dicembre 2016 ed il totale di tutto il 2016.

    Consigli per semplificare le query?
    Ultima modifica di harry80; 12-05-2016 a 16:06

  3. #13
    Utente di HTML.it
    Registrato dal
    Apr 2011
    residenza
    Arezzo
    Messaggi
    194
    Aspetta un minuto... ma la tua esigenza effettiva qual'è?

    Devi tenere il conto delle prenotazioni e basta?
    Devi tenerlo per tipologia di camera?
    Devi indicare all'utente che richiede una prenotazione la disponibilità? e se si devi semplicemente accettare o meno la prenotazione o dirgli anche quando eventualmente è libera la camera?

    Credo che prima di agire sulle query dovresti considerare bene se la struttura del db è giusta o meno, è fondamentale.
    La questione è abbastanza complessa secondo me, e con poche informazioni non è facile dare dei consigli/suggerimenti
    Riccardo Sadocchi
    Microsoft MCP C#

  4. #14
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Il mio è un gestione lato hotel, quindi le prenotazioni vengono inserite di volta in volta dal responsabile dell'hotel, non è quindi prenotazione diretta da parte degli utenti.

    Al momento, come vedi dal codice che ho postato, riesco a contare le prenotazioni totali del 2016, totali mese per mese e separate per le 2 suites.

    Ora ho la necessità di inserire anche il parametro di giorni prenotati e giorni liberi, facendo distinzione tra mese e mese.

    Quindi numero prenotazioni, notti prenotate, notti disponibili.

    Spero di aver chiarito tutto e grazie della tua disponibilità.

  5. #15
    Utente di HTML.it
    Registrato dal
    Apr 2011
    residenza
    Arezzo
    Messaggi
    194
    Forse la mia risposta è un po' "veloce", ma facciamo un esempio

    la tua $query_prenotazioni_12_2016 prende tutte le prenotazioni di dicembre 2016 dal db, ammettiamo (se ho capito bene...) che tu hai 10 camere disponibili per un totale quindi di 31 notti *10 camere = 310 notti disponibili a dicembre

    se con un ciclo for (o foreach) passi alla funzione che ho postato prima tutti i checkin e out delle prenotazioni che ricevi dalla query, ti salvi in una variabile $notti_occuate quello che ti restituisce la funzione in $nomevariabile['Dic'] e la sommi ad ogni ciclo.

    alla fine avrai tutte le notti occupate in $notti_occupate, e le libere saranno 310 - $notti_occupate
    Riccardo Sadocchi
    Microsoft MCP C#

  6. #16
    Secondo me per il calcolo delle notti andrebbe bene una cosa del genere:

    Codice PHP:

    <?php

    $from 
    = new \DateTime('2015-01-01 00:00:00');
    $to = new \DateTime('2016-05-01 23:59:00');

    $diff $from->diff($to);

    $anni $diff->y;
    $mesi $diff->+ (12 $diff->y);
    $giorni $diff->days;
    $ore $diff->+ (24 $diff->days);
    $minuti $diff->+ (60 $ore);
    $secondi $diff->+ (60 $minuti);

    $notti $giorni <= $giorni//possiamo fregarcene degli orari e dire che anche se prenoto per 1 giorno (days == 0) considero sempre almeno una notte

    echo "sono passati: \n";
    echo 
    sprintf("anni: %s \n mesi: %s \n giorni: %s \n ore: %s \n minuti: %s \n secondi: %s \n notti: %s",
        
    $anni$mesi$giorni$ore$minuti$secondi$notti );
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  7. #17
    Utente di HTML.it
    Registrato dal
    Apr 2011
    residenza
    Arezzo
    Messaggi
    194
    Si andrebbe più che bene, il problema è che lui ha bisogno di sapere anche quante notti sono in un mese e quante nel successivo, nel caso che una prenotazione sia a cavallo tra due mesi.

    Inoltre deve ciclarlo su tutte le prenotazioni che ha in db
    Riccardo Sadocchi
    Microsoft MCP C#

  8. #18
    Quote Originariamente inviata da rikyeko Visualizza il messaggio
    Si andrebbe più che bene, il problema è che lui ha bisogno di sapere anche quante notti sono in un mese e quante nel successivo, nel caso che una prenotazione sia a cavallo tra due mesi.

    Inoltre deve ciclarlo su tutte le prenotazioni che ha in db
    quella risponde alla funzione "function calcolaNotti($checkIn,$checkOut)": date due date, a prescindere da quanti mesi/anni/giorni ci siano in mezzo, quello dovrebbe darti il numero di notti trascorse. per sapere quante notti ci sono in un mese devi sapere quanti giorni ci sono in un mese:

    Codice PHP:
    <?php


    $mese 
    "02"//febbraio
    $anno 2016//l'anno deve essere conosciuto

    echo "giorni nel mese {$mese}/{$anno} : ".date('t',strtotime($anno.'-'.$mese.'-01'));
    questa è una base di come si usano le funzioni delle date (uno spunto ecco). Ora se vuole sapere per la camera A l'andamento delle prenotazioni, può calcolarselo prendendo un range di prenotazioni dal db e facendo gli opportuni calcoli. Ad esempio, se io ho una prenotazione del tipo :

    dal 2016-02-28 al 2016-03-02in realtà ho la prenotazione dal 2016-02-28 al 2016-02-29 e dal 2016-03-01 al 2016-03-02. Quindi può dire che a febbraio su 29 notti ne aveva 2 occupate (se c'è il cambio di mese si aggiunge una notte) + una notte a marzo su 31. Insomma se vuole lavorare con le date, fossi in lui giocherei piu sulle funzionalità di DateTime che del codice che ha scritto. Poi se vuole che i dati glieli dia direttamente una query, deve usare le funzioni delle date del suo db (se possibile)
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  9. #19
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Grazie a tutti! Provo a carburare quello che mi avete segnalato, se ho problemi, ci si risente.

    Comunque intendevo dire, non di fare tutto tramite la query, ma se c'era possibilità di snellire la ripetizione mese per mese, suites per suites.

  10. #20
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Aggiungo che oltre ad i soliti campi Nome, Cognome, ecc. quelli importanti sono:

    "checkin" - tipo "date"
    "checkout" - tipo "date"
    "suite" - tipo "testo"

    quindi le operazioni di conteggio devo farli sicuramente con questi, se vi viene qualche altra idea nel frattempo, postate pure.

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.