Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    Gestione prenotazione e conteggi

    Devo fare la somma delle prenotazioni dal giorno tot al giorno tot, ma non ho creato il sistema di booking, nel database sto inserendo i prezzi per periodo e cioe' in questo modo:

    dal 01/05 al 30/06/2011 euro 50
    dal 30/06 al 31/07/2011 euro 65

    ora vorrei fare in modo che un cliente scelga la data del soggiorno su un form ed in automatico capisca che prezzo c'e', anche se per caso la prenotazione dovesse prendere i 2 periodi per esempio dal 28/05 al 04/06/2011 dovrebbe calcolare in automatico le notti a 50 euro e le notti a 65 euro.

    Come potrei gestire la cosa?
    Avete qualche altra idea su come strutturare questa gestione dei prezzi?
    Mai dire Mai

  2. #2
    ti consiglio di convertire le date in time() così puoi lavorare con gli interi e quindi più facile fare le operazioni

    http://it.php.net/manual/en/function.time.php
    /*no comment*/

  3. #3
    Originariamente inviato da fgiovanni
    ti consiglio di convertire le date in time() così puoi lavorare con gli interi e quindi più facile fare le operazioni

    http://it.php.net/manual/en/function.time.php
    le ho messe di tipo date, senza l'orario, va bene lo stesso??
    I conteggi come devo farli?
    Faccio scegliere le date e poi come faccio fare il calcolo???
    Mai dire Mai

  4. #4
    così hai il time e fai le operazioni che vuoi
    codice:
    $data = "01/01/2011";
    list($dd, $mm, $yyyy) = explode('/', $data);
    
    echo mktime(0,0,0,$mm, $dd, $yyyy);
    /*no comment*/

  5. #5
    il problema e' che io non capisco come devo fare i calcoli scegliendo delle date e pescare i prezzi da quel range di tariffe che ho indicato nel db
    Mai dire Mai

  6. #6
    codice:
    //data start prenotazione
    $data = "28/06/2011";
    list($dd, $mm, $yyyy) = explode('/', $data);
    $start_pre = mktime(0,0,0,$mm, $dd, $yyyy);
    
    //data stop prenotazione
    $data = "02/06/2011";
    list($dd, $mm, $yyyy) = explode('/', $data);
    $stop_pre = mktime(0,0,0,$mm, $dd, $yyyy);
    
    //date dei vari periodi
    $data = "01/05/2011";
    list($dd, $mm, $yyyy) = explode('/', $data);
    $data1 = mktime(0,0,0,$mm, $dd, $yyyy);
    
    $data = "30/06/2011";
    list($dd, $mm, $yyyy) = explode('/', $data);
    $data2 = mktime(0,0,0,$mm, $dd, $yyyy);
    
    $periodo1 = array($data1, $data2, 50);
    
    $data = "31/07/2011";
    list($dd, $mm, $yyyy) = explode('/', $data);
    $data3 = mktime(0,0,0,$mm, $dd, $yyyy);
    
    $periodo2 = array($data2, $data3, 65);
    
    $per = array($periodo1, $periodo2);
    
    //calcolo
    $costo = 0;
    //calcolo su ogni giorno
    while($start_pre<$stop_pre){
    //controllo tutti i periodi finche trovo quello che mi serve
    	foreach ($per as $value) {
    		if($value[0]<$start_pre && $value[1]>=$start_pre){
    //periodo trovato
    //aumento il costo
    			$costo += $value[2];
    //aumento la data di 1 giorno.
    			$start_pre += (60*60*24);
    //fermo il ciclo non è necessario controllare oltre
    			break;
    		}
    	}
    }
    //ho il costo totale
    echo $costo;
    dovrebbe funzionare, si può anche migliorare
    /*no comment*/

  7. #7
    perfetto, ho capito come hai fatto

    ultima domanda, a questo punto e' sbagliato mettere i prezzi nel db in questo modo?

    codice:
    -- Struttura della tabella `prezzi`
    --
    
    CREATE TABLE IF NOT EXISTS `prezzi` (
      `id_prezzo` smallint(6) NOT NULL auto_increment,
      `id_hotel` int(3) NOT NULL,
      `id_camera` int(3) NOT NULL,
      `dal_giorno` date NOT NULL,
      `al_giorno` date NOT NULL,
      `tipo_camera` varchar(200) NOT NULL,
      `prezzo` float NOT NULL,
      `quantita` varchar(10) NOT NULL,
      `rilascio` int(3) NOT NULL,
      PRIMARY KEY  (`id_prezzo`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
    
    --
    -- Dump dei dati per la tabella `prezzi`
    --
    
    INSERT INTO `prezzi` (`id_prezzo`, `id_hotel`, `id_camera`, `dal_giorno`, `al_giorno`, `tipo_camera`, `prezzo`, `quantita`, `rilascio`) VALUES
    (1, 1, 1, '2011-05-01', '2011-06-30', 'Matrimoniale Solo Camera ', 55, '5', 3),
    (2, 1, 2, '2011-05-01', '2011-06-30', 'Matrimoniale Camera e colazione ', 80, '5', 3),
    (3, 1, 3, '2011-05-01', '2011-06-30', 'Matrimoniale Mezza pensione', 94, '5', 3),
    (4, 1, 1, '2011-06-30', '2011-08-31', 'Matrimoniale Solo Camera', 63, '3', 6),
    (5, 1, 2, '2011-06-30', '2011-08-31', 'Matrimoniale Camera e colazione', 79, '5', 6),
    (6, 1, 3, '2011-06-30', '2011-08-31', 'Matrimoniale Mezza pensione', 109, '6', 6);
    nel senso, devo mettere solamente una data?
    Per esempio, nel caso della prima riga ho indicato che dal 1 maggio al 30 giugno il prezzo per la camera e' di 55 euro, poi il 5 affianco e' la quantita' di camere libere, mentre il 3 equivale a quanti giorni prima e' possibile effettuare la prenotazione online... altrimenti bisogna telefonarci...
    Mai dire Mai

  8. #8
    altra cosa, come faccio a tirare fuori tutti i periodi date dei vari periodi numerando i periodi e le date?
    esempio data1, data2, data3, data4
    periodo1, periodo2, periodo3 ecc?

    Mi serve un ciclo for?

    io estraggo le date dal db in questo modo...
    Codice PHP:
    $sql=mysql_query("select id_prezzo, id_hotel, id_camera, DATE_FORMAT(dal_giorno, '%d/%m/%Y') AS dal_giorno, DATE_FORMAT(al_giorno, '%d/%m/%Y') AS al_giorno, tipo_camera, prezzo, quantita, rilascio from prezzi where id_hotel=1 and id_camera=1");
    while (
    $riga=mysql_fetch_array($sql)) { 
    $id_prezzo=$riga['id_prezzo'];
    $id_hotel=$riga['id_hotel']; 
    $id_camera=$riga['id_camera'];
    $dal_giorno=$riga['dal_giorno'];
    $al_giorno=$riga['al_giorno'];
    $tipo_camera=$riga['tipo_camera'];
    $prezzo=$riga['prezzo'];
    $prezzo number_format($prezzo2','' ');
    $prezzo str_replace(",",".",$prezzo);
    $quantita=$riga['quantita'];
    $rilascio=$riga['rilascio']; 

    $data "$dal_giorno";
    list(
    $dd$mm$yyyy) = explode('/'$data);
    $data1 mktime(0,0,0,$mm$dd$yyyy);


    echo 
    "$data1
    "
    ;

    pero' poi mi perdo...
    Mai dire Mai

  9. #9
    ultima domanda, a questo punto e' sbagliato mettere i prezzi nel db in questo modo?
    secondo me si, dovresti dividere il listino dei prezzi con la disponibilità e i giorni di prenotazione perchè gli vedo come concetti diversi e quindi tabelle separate.

    altra cosa, come faccio a tirare fuori tutti i periodi date dei vari periodi numerando i periodi e le date?
    questa è la parte base della programmazione!!! . Devi utilizzare i cicli e delle variabili che valorizzerai dinamicamente!!
    Ti consiglio di studiarti un pò di programmazione base, uso di array cicli, ecc.


    codice:
    $sql=mysql_query("select id_prezzo, id_hotel, id_camera, DATE_FORMAT(dal_giorno, '%d/%m/%Y') AS dal_giorno, DATE_FORMAT(al_giorno, '%d/%m/%Y') AS al_giorno, tipo_camera, prezzo, quantita, rilascio from prezzi where id_hotel=1 and id_camera=1");
    $a = array();
    while ($riga=mysql_fetch_array($sql)) { 
    	$temp = array("id_prezzo"=>$riga['id_prezzo'],
    	"id_hotel"=>$riga['id_hotel'], 
    	"id_camera"=>$riga['id_camera']);
    
    	$data = $temp['dal_giorno'];
    	list($dd, $mm, $yyyy) = explode('/', $data);
    	$temp['dal_giorno'] = mktime(0,0,0,$mm, $dd, $yyyy);
    	
    	array_push($a, $temp);
    	//echo "$data1
    ";
    }
    /*no comment*/

  10. #10
    ma quindi nel db dici che devo mettere solo la data di inizio del periodo?

    ho provato quel codice che mi hai dato ma non mi fa fare niente.

    Il primo codice che mi hai dato funziona bene e l'ho capito, e sto provando a rendere il mio codice, pescando i prezzi dal database, simile al tuo dinamicamente.

    Ora sono riuscito ad arrivare a questo punto
    Codice PHP:
    $data_arrivo=$_POST['from'];
    list(
    $dd$mm$yyyy) = explode('/'$data_arrivo);
    $start_pre mktime(0,0,0,$mm$dd$yyyy);

    $data_partenza=$_POST['to'];
    list(
    $dd$mm$yyyy) = explode('/'$data_partenza);
    $stop_pre mktime(0,0,0,$mm$dd$yyyy);

    $n=0;
    $sql=mysql_query("select id_prezzo, id_hotel, id_camera, DATE_FORMAT(dal_giorno, '%d/%m/%Y') AS dal_giorno, DATE_FORMAT(al_giorno, '%d/%m/%Y') AS al_giorno, tipo_camera, prezzo, quantita, rilascio from prezzi where id_hotel=1 and id_camera=1");
    while (
    $riga=mysql_fetch_array($sql)) { 
    $id_prezzo=$riga['id_prezzo'];
    $id_hotel=$riga['id_hotel']; 
    $id_camera=$riga['id_camera'];
    $dal_giorno=$riga['dal_giorno'];
    $al_giorno=$riga['al_giorno'];
    $tipo_camera=$riga['tipo_camera'];
    $prezzo=$riga['prezzo'];
    $prezzo number_format($prezzo2','' ');
    $prezzo str_replace(",",".",$prezzo);
    $quantita=$riga['quantita'];
    $rilascio=$riga['rilascio']; 



    $data "$dal_giorno";
    list(
    $dd$mm$yyyy) = explode('/'$data);
    $data1 mktime(0,0,0,$mm$dd$yyyy);

    $data "$al_giorno";
    list(
    $dd$mm$yyyy) = explode('/'$data);
    $data2 mktime(0,0,0,$mm$dd$yyyy);


    $n++;
    //QUESTA PARTE NON SONO SICURO CHE E' CORRETTA
    $periodo_.$n = array("$data1""$data2""$prezzo");

    //QUESTA RIGA DI CODICE NON CAPISCO COME CREARLA DINAMICAMENTE
    $per = array($periodo_1$periodo_2);


    Per il resto, dopo credo che mi basterebbe copiare il resto del tuo codice per avere le varie somme... o no?
    Mai dire Mai

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