• User

    Script molto utile e interessante, ottimo come base di partenza per poi sviluppare applicazioni più complesse... L'unica cosa è che segnala una serie di "Notice: Undefined variable" per quanto riguarda le variabili $in e $out, ma nonostante ciò funziona bene...


  • Consiglio Direttivo

    Ciao ale87440 e grazie del commento 😉

    Sicuramente si trova degli indici vuoti e quindi esce fuori i Notice.
    Per eliminarli o diminuisci il livello di Notice o con un paio di modifiche fai in modo di valorizzare comunque ogni indice che verrà analizzato dallo script. 😉

    :ciauz:


  • User Newbie

    Ciao, sono da poco iscritto e volevo complimentarmi col lavoro che hai proposto.
    L'ho provato subito ma riscontro dei problemi e non so se sono miei errori...

    Nel DB i campi "data_inizio_periodo" e "data_fine_periodo" di che tipo devono essere? Timestamp?
    Dichiarandoli entrambi come timestamp se metto come "data_inizio_periodo" la data odierna e come "data_fine_periodo" sempre la data odierna o anche un altro giorno seguente non mi visualizza nessuna prenotazione!!

    Puoi darmi qualche suggerimento?
    Grazie in anticipo e complimenti comunque!


  • User

    Io ho semplicemente messo INT(11) come campo delle date, così da non avere alcun problema...

    Ciao...


  • Consiglio Direttivo

    Salve ragazzi e benvenuto a koqu nel Forum GT. 😉

    Si, tutti i campi data sono gestiti in formato timestamp, esattamente come ale87440 utilizzo dei campi INT.
    Per il tuo caso ho appena testato e funziona, guarda la demo: stanza 9 mese Aprile. 😉


  • User Newbie

    Ciao, ottimo lavoro, ho un problemino quando l'inizio della prenotazione è l'ultimo giorno del mese viene visualizzato libero mentre gli altri giorni della prenotazione sono corretti, cosa mi sfugge?
    Saluti.


  • Consiglio Direttivo

    Ciao nerkyos e benvenuto nel Forum GT. 🙂

    Ho appena fatto dei test e a me non da problemi.
    Ti direi di verificare il valore del timestamp salvato come data inizio.
    Come puoi vedere anche nella demo ci sono vari casi di data inizio uguale all'ultimo giorno del mese e funzionano sia come prenotazione che come confermato.
    Facci sapere. :ciauz:


  • User Newbie

    Si ho risolto grazie era un problema con il mysql.

    Saluti, buon lavoro.


  • Consiglio Direttivo

    Bene così, buon lavoro anche a te. 😉


  • User Newbie

    Ti ringrazio per l'ottimo lavoro....da diverso tempo stavo elaborando una soluzione per fare questo planning per il mio software e sembra calato apposta sulle mie tabelle.

    Io ho fatto solo una modifica alla sql per gestire sia gli ospiti in casa che le prenotazioni facendo una union ed ho messo una funzione di modifca al campo in e out avendo messo d'appertutto nel mio db i campi come date e non timestamp.

    Ve la invio...chissa che non serva a qualcuno!!!

    SELECT *
    FROM (
    (
    SELECT arrivi.id_ospiti , arrivi.id_prenotazioni , arrivi.id_arrivo , arrivi.stato , arrivi.tipo_camera0 , arrivi.id_camera , arrivi.id_per_tipo_ospite , arrivi.tipo_ospite , UNIX_TIMESTAMP( arrivi.check_in ) AS check_in , UNIX_TIMESTAMP( arrivi.check_out ) AS check_out , arrivi.n_giorni
    FROM arrivi
    WHERE arrivi.id_camera ='".$row_stanze['id_stanza']."'
    )
    UNION (
    SELECT prenotazioni.id_ospiti , prenotazioni.id_prenotazioni , prenotazioni.id_arrivo , prenotazioni.stato , prenotazioni.tipo_camera0 , prenotazioni.id_camera , prenotazioni.id_per_tipo_ospite , prenotazioni.tipo_ospite , UNIX_TIMESTAMP( prenotazioni.check_in ) AS check_in , UNIX_TIMESTAMP( prenotazioni.check_out ) AS check_out , prenotazioni.n_giorni
    FROM prenotazioni
    WHERE prenotazioni.id_camera ='".$row_stanze['id_stanza']."'
    )
    ) AS Tabella
    WHERE ((check_in < '$startmonth' AND check_out >= '$startmonth') OR (check_in >='$startmonth' AND check_out <= '$stopmonth') OR (check_in <= '$stopmonth' AND check_out > '$stopmonth')) GROUP BY Tabella.id_per_tipo_ospite";


  • Consiglio Direttivo

    Grazie Aleami77. 🙂

    Sarà sicuramente utile. 😉


  • User Newbie

    $mesi["January"]="Gennaio";
    $mesi["February"]="Febbraio";
    $mesi["March"]="Marzo";
    $mesi["April"]="Aprile";
    $mesi["May"]="Maggio";
    $mesi["June"]="Giugno";
    $mesi["July"]="Luglio";
    $mesi["August"]="Agosto";
    $mesi["September"]="Settembre";
    $mesi["October"]="Ottobre";
    $mesi["November"]="Novembre";
    $mesi["December"]="Dicembre";

    $dati['mese_text'] = $mesi[date("F", $time)];

    a qualcuno magari poteva servire avere i mesi in italiano.
    Chi sa dirmi perchè la prima data prenotata mi si evidenzia mentre l'ultima rimane uguale alle date di mezzo?
    Inoltre vorrei poter cliccare sul calendario direttamente per poter inserire la prenotazione. QUalche idea?
    grazie


  • User Newbie

    Ciao a tutti,

    ho scaricato questo script e lo trovo fantastico. Sarebbe possibile avere la struttura delle tabelle interessate?


  • User Newbie

    buon dì,
    sono contentissimo di aver trovato il tuo script , molto utile per il mo progetto, l'unico problema che riscontro è che non mi cambia i colori nelle celle quando inserisco le date datain/dataout. Campo mysql(tipo datatime), Es in 2011-08-20 out 2011-08-18, nel form delle prenotazioni le celle mi rimangono tutte verdi, è cone se non riconoscesse le date inserite sarei molto grato se mi potessi aiutare a risolverlo.:x
    complimenti per lo script


  • User Newbie

    Ciao a tutti,

    sono un nuovo iscritto e ho un problema con lo script oggetto di questo post. Premetto che ho scaricato il file zip e l'ho testato trovandolo altamente funzionale.

    Io però lo vorrei adattare alla mia situazione: quella di un autonoleggio. A differenza del caso dell'albergo (in cui al posto delle stanze ho le auto) non so come fare per adattare il mio database mysql allo script.

    Questo è il dump relativo alle mie tabelle:

    [PHP]
    TABELLA NOLEGGIO

    CREATE TABLE IF NOT EXISTS noleggio (
    contratto bigint(50) NOT NULL auto_increment,
    data_contratto date NOT NULL,
    data_inizio date NOT NULL,
    data_fine date NOT NULL,
    cliente varchar(255) NOT NULL,
    flotta varchar(255) NOT NULL,
    conducenti text,
    costo_giornaliero decimal(10,2) NOT NULL,
    costo_totale decimal(10,2) NOT NULL,
    sanzione_giornaliera decimal(10,2) NOT NULL,
    giorni_totale varchar(5) NOT NULL,
    PRIMARY KEY (contratto)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

    TABELLA FLOTTA

    CREATE TABLE IF NOT EXISTS flotta (
    id bigint(50) NOT NULL auto_increment,
    targa varchar(7) default NULL,
    telaio varchar(255) default NULL,
    modello varchar(150) default NULL,
    versione varchar(255) default NULL,
    colore varchar(100) default NULL,
    lungo_periodo tinyint(1) default NULL,
    km varchar(10) default NULL,
    carburante varchar(20) default NULL,
    kw varchar(10) default NULL,
    cv varchar(10) default NULL,
    cilindrata varchar(10) default NULL,
    data_immatricolazione varchar(10) default NULL,
    categoria varchar(255) NOT NULL,
    PRIMARY KEY (id),
    UNIQUE KEY telaio (telaio),
    UNIQUE KEY targa (targa)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

    TABELLA CLIENTI

    CREATE TABLE IF NOT EXISTS clienti (
    id bigint(50) NOT NULL auto_increment,
    ragione_sociale varchar(255) NOT NULL,
    via varchar(255) NOT NULL,
    numero varchar(5) NOT NULL,
    cap varchar(5) NOT NULL,
    citta varchar(255) NOT NULL,
    provincia varchar(5) NOT NULL,
    cellulare varchar(15) NOT NULL,
    email varchar(255) NOT NULL,
    partita_iva varchar(15) NOT NULL,
    codice_fiscale varchar(15) NOT NULL,
    pagamento varchar(255) default NULL,
    PRIMARY KEY (id)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
    [/PHP]

    Da notare che non ho una tabella prenotazioni e quindi non so come poter adattare il tutto al mio caso.

    Mi sapete dare una traccia?


  • Consiglio Direttivo

    Ciao a tutti,
    intanto mi scuso per il ritardo nel rispondervi, ho avuto un po' di mesi abbastanza incasinati. 😉

    Vediamo se possiamo risolvere qualche problema.

    @creatorweb said:

    Chi sa dirmi perchè la prima data prenotata mi si evidenzia mentre l'ultima rimane uguale alle date di mezzo?
    Ciao Creatorweb. 😉
    Prova a fare un vardump dell'array in questione e verifica che combaci con il timestamp della data di check-out. Ad occhio sembra che sia maggiore quindi lo interpreta come "giorno di mezzo". Se è solo un caso, potresti postare la data interessata? Se è per tutte le casistiche c'è qualcosa che non va, come vedi nella demo non crea alcun problema.
    @creatorweb said:

    Inoltre vorrei poter cliccare sul calendario direttamente per poter inserire la prenotazione. QUalche idea?
    grazie
    Personalmente, esattamente come è stato inserito il link per i periodi prenotati, quindi basta che vedi lo script di costruzione, mi linko dalle caselle in verde alla pagina di inserimento prenotazione portandomi dietro il timestamp del giorno dove ho cliccato e l'id della stanza, così mi trovo già due campi compilati. 🙂

    P.S. Grazie per i Mesi in Italiano 😉
    @Nemo81 said:

    Ciao a tutti,

    ho scaricato questo script e lo trovo fantastico. Sarebbe possibile avere la struttura delle tabelle interessate?
    Grazie Nemo81. 🙂

    Nel primo post trovi la struttura base delle tabelle da creare per l'utilizzo dello script. 😉
    @maripas said:

    buon dì,
    sono contentissimo di aver trovato il tuo script , molto utile per il mo progetto, l'unico problema che riscontro è che non mi cambia i colori nelle celle quando inserisco le date datain/dataout. Campo mysql(tipo datatime), Es in 2011-08-20 out 2011-08-18, nel form delle prenotazioni le celle mi rimangono tutte verdi, è cone se non riconoscesse le date inserite sarei molto grato se mi potessi aiutare a risolverlo.:x
    complimenti per lo script
    Ciao maripas. 🙂
    L'intero script è sviluppato con date in formato timestamp, come vedi scritto anche nel primo post, pertanto non potrai mai trovar corrispondenza tra l'indice dell'array (in timestamp 1313020800) ed il valore della data (in datetime 2011-08-20). 😉

    @Neo996sps said:

    Io però lo vorrei adattare alla mia situazione: quella di un autonoleggio. A differenza del caso dell'albergo (in cui al posto delle stanze ho le auto) non so come fare per adattare il mio database mysql allo script.
    Ciao Neo996sps. 🙂

    La struttura di base non cambia, diciamo, anche se nel caso di noleggio hai dei controlli in più da fare.
    Mentre in una struttura alberghiera i check-out si fanno entro un certo orario (supponiamo le 11) ed i check-in dopo almeno un'ora (supponiamo le 12), nel caso dell'autonoleggio queste certezze non ci sono, quindi dovrai inserire dei controlli specifici sugli orari, almeno nei giorni in cui ti si accavalla un out ed un in per la stessa macchina. Il controllo lo immetterei all'atto dell'inserimento della nuova prenotazione.
    Fantastico sarebbe inserire dei controlli Ajax che alla selezione di macchina data uscita e data rientro ti dica nell'immediato se ti stai accavallando ad altre prenotazioni o meno e se hai, o meno, problemi sull'orario di uno dei due giorni rispetto ad altre prenotazioni. Esempio ti spunti una nota: La vettura AA000AA giorno xx-xx-xxxx rientra dal noleggio alle ore 15.00, cosi sai che quella macchina non potrai di certo noleggiarla per orari precedenti e forse neanche successivi conoscendo i clienti 😄 ma queste sono considerazioni che deve fare l'essere umano almenocché non si stabilisca che di default, sempre a mo di esempio, una macchina non è disponibile prima di 2 ore successive al rientro previsto dal noleggio precedente così prevedi il ritardo del cliente e gli eventuali espletamenti di lavaggio, refuelling ed altro. 😉
    Ma se manca Ajax gli stessi controlli si possono fare anche tramite PHP, ma sarà meno figo :figo2:

    😄

    Spero di esservi stato d'aiuto.
    A presto :ciauz:


  • User Newbie

    Ciao,

    io ancora non riesco ad adattare lo script alle mie esigenze. Si può avere il dump del database che sfrutta la demo del primo post?


  • Consiglio Direttivo

    Ciao Neo996sps,
    la struttura è molto banale, ti riporto quanto indicato nel primo post. 😉
    @Samyorn said:

    Per quanto concerne le tabelle è inutile che posti la struttura da me creata perché sarebbe inutilizzabile dato che fa parte di una applicazione più complessa. Sommariamente, per l'utilizzo di questo script, ci devono essere:

    • Una tabella "anagrafica" con un "id" Auto Increment ed il campo "intestazione" dove inserire il nome e cognome del cliente

    • Una tabella "stanze" che abbia un "id" Auto Increment ed il campo "nome" dove inserire il nome della stanza

    • Una tabella "prenotazioni" che abbia

    • "id" Auto Increment,

    • un campo "id_cliente" dove inserire l'id del cliente che sta prenotando,

    • un campo "id_stanza" dove inserire l'id della stanza prenotata,

    • un campo "datain" dove inserire il timestamp della data inizio prenotazione

    • un campo "dataout" dove inserire il timestamp della data fine prenotazione

    • un campo "stato" che sarà valorizzato 0 se la prenotazione non è confermata e 1 se invece lo è


  • Consiglio Direttivo

    Quì il dump del database della demo:

    
    
    --
    -- Struttura della tabella `anagrafica`
    --
    
    CREATE TABLE IF NOT EXISTS `anagrafica` (
      `id` int(100) NOT NULL AUTO_INCREMENT,
      `intestazione` varchar(255) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
    
    --
    -- Dump dei dati per la tabella `anagrafica`
    --
    
    INSERT INTO `anagrafica` (`id`, `intestazione`) VALUES
    (1, 'Samyorn'),
    (2, 'Forum GT');
    
    -- --------------------------------------------------------
    
    
    --
    -- Struttura della tabella `prenotazioni`
    --
    
    CREATE TABLE IF NOT EXISTS `prenotazioni` (
      `id` int(255) NOT NULL AUTO_INCREMENT,
      `id_cliente` int(11) NOT NULL,
      `id_stanza` int(11) NOT NULL,
      `datain` int(11) NOT NULL,
      `dataout` int(11) NOT NULL,
      `stato` int(11) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=18 ;
    
    --
    -- Dump dei dati per la tabella `prenotazioni`
    --
    
    INSERT INTO `prenotazioni` (`id`, `id_cliente`, `id_stanza`, `datain`, `dataout`, `stato`) VALUES
    (1, 1, 2, 1271109600, 1272492000, 1),
    (2, 2, 4, 1267052400, 1267398000, 0),
    (3, 1, 6, 1269986400, 1270159200, 1),
    (4, 1, 6, 1269126000, 1269986400, 0),
    (5, 2, 2, 1267398000, 1268434800, 0),
    (6, 1, 9, 1267743600, 1268866800, 1),
    (7, 1, 5, 1271541600, 1272578400, 1),
    (8, 2, 4, 1267743600, 1268866800, 1),
    (9, 1, 5, 1270677600, 1271541600, 0),
    (10, 2, 6, 1270504800, 1270850400, 1),
    (11, 1, 8, 1270850400, 1271628000, 0),
    (12, 2, 9, 1272060000, 1272751200, 0),
    (13, 1, 4, 1287525600, 1288476000, 1),
    (14, 2, 7, 1285884000, 1287180000, 0),
    (15, 1, 3, 1292022000, 1292108400, 1),
    (16, 2, 7, 1292108400, 1292799600, 0),
    (17, 1, 3, 1293145200, 1293922800, 1);
    
    -- --------------------------------------------------------
    
    --
    -- Struttura della tabella `stanze`
    --
    
    CREATE TABLE IF NOT EXISTS `stanze` (
      `id` int(100) NOT NULL AUTO_INCREMENT,
      `nome` varchar(100) NOT NULL,
      PRIMARY KEY (`id`),
      UNIQUE KEY `nome` (`nome`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;
    
    --
    -- Dump dei dati per la tabella `stanze`
    --
    
    INSERT INTO `stanze` (`id`, `nome`) VALUES
    (1, 'Stanza1'),
    (2, 'Stanza2'),
    (3, 'Stanza3'),
    (4, 'Stanza4'),
    (5, 'Stanza5'),
    (6, 'Stanza6'),
    (7, 'Stanza7'),
    (8, 'Stanza8'),
    (9, 'Stanza9');
    
    -- --------------------------------------------------------
    

    Spero ti sia utile. :ciauz:


  • User Newbie

    Ciao sono nuovo del forum!
    Ho trovato questo forum proprio perchè stavo cercando uno script come questo da utilizzare per un esame di base di dati. E questo è perfetto!:)
    Premetto che sul php/sql non ho molta esperienza e mi sto avvicinando adesso proprio per motivi di studio... per cui portate pazienza se scrivo boiate o chiedo cose ovvie... 😄

    Ho provato a lanciare lo script dall'archivio linkato in prima pagina ed utilizzando come prova il DB postato nel dump precedente, ma invece che girare liscio mi ritorna:

    Notice: Undefined index: mese in C:\Program Files (x86)\EasyPHP-5.3.8.1\www\calendar\index.php on line 32

    Notice: Undefined index: anno in C:\Program Files (x86)\EasyPHP-5.3.8.1\www\calendar\index.php on line 33

    e poi diseguito mi scrive come testo il codice dalla linea 97 circa fino alla fine...

    Il collegamento al DB avviene in maniera corretta (passa i controlli iniziali), probabilmente è una stupidaggine, ma non riesco proprio a venirne a capo...:x