Pagina 10 di 10 primaprima ... 8 9 10
Visualizzazione dei risultati da 91 a 97 su 97
  1. #91
    Utente di HTML.it
    Registrato dal
    Apr 2011
    residenza
    Arezzo
    Messaggi
    194
    nell'array che viene scorso dal foreach ci sono 3 mesi valorizzati, tu nell'if che è all'interno gli dici di stampare i valori se $k (che è l'indice di $tot2016_suite_01) è uguale a Maggio, se non lo è di stampare QUANDO VUOTO, ma in realtà non stampi un mese vuoto, stampi quella tabella a 0 per, presumibilmente, Aprile prima e Giugno poi.

    Per stampare i valori a zero di un mese dovresti, credo sia la via più sempliece e veloce, valorizzare inizialmente $tot2016_suite_01 in modo diverso.
    adesso, dopo aver estratto i dati dal db e prima di fare il calcolaNotti() fai una cosa tipo
    $tot2016_suite_01 = [];

    trasformalo in
    $tot2016_suite_01 = ['Gennaio'=>0, 'Febbraio'=>0, ............. , 'Dicembre'=>0];

    e cancella completamente else{QUANDO VUOTO}

    fammi sapere...
    Riccardo Sadocchi
    Microsoft MCP C#

  2. #92
    Quote Originariamente inviata da rikyeko Visualizza il messaggio

    inserendo le date 2015-12-15 e 2016-06-13 mi da come output

    notti : 181
    Dic : 17
    Gen : 31
    Feb : 28
    Mar : 31
    Apr : 30
    Mag : 31
    Giu : 12
    Scusa non so come è andata avanti la discussione. Ma questa è sbagliata.
    Febbraio ha 29 giorni nel 2016 e infatti la somma dei mesi fa 180 e non 181

    Prova questa funzione qui:


    codice:
    function getNightsInfo($start, $end)
    {
      $startDateTime = new DateTime($start);
      $endDateTime   = new DateTime($end);
    
    
      $diff   = $endDateTime->diff($startDateTime);
      $nights = (int)$diff->format('%a');
    
    
    
    
      $interval = new DateInterval("P1D");
      $start    = clone $startDateTime;
      
      $nightsMonths = [ ];
      while ($start < $endDateTime) {
        $month = $start->format("M Y");
        if ( !isset($nightsMonths[$month]) )
          $nightsMonths[$month] = 0;
        $nightsMonths[$month]++;
        $start->add($interval);
      }
    
    
      return [ 'nights' => $nights, 'months' => $nightsMonths ];
    
    
    }
    
    $start = "2015-12-15";
    $end   = "2016-06-13";
    
    $nights = getNightsInfo($start, $end);
    print_r($nights);
    /*
    Array
    (
        [nights] => 181
        [months] => Array
            (
                [Dec 2015] => 17
                [Jan 2016] => 31
                [Feb 2016] => 29
                [Mar 2016] => 31
                [Apr 2016] => 30
                [May 2016] => 31
                [Jun 2016] => 12
            )
    
    )
    */

  3. #93
    Utente di HTML.it
    Registrato dal
    Apr 2011
    residenza
    Arezzo
    Messaggi
    194
    Quote Originariamente inviata da chumkiu Visualizza il messaggio
    Scusa non so come è andata avanti la discussione. Ma questa è sbagliata.
    Febbraio ha 29 giorni nel 2016 e infatti la somma dei mesi fa 180 e non 181
    si è già corretto, nella funzione avevo passato l'hanno sbagliato, comunque funziona bene
    Riccardo Sadocchi
    Microsoft MCP C#

  4. #94
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Il progetto sta procedendo bene, grazie ancora, sto ripetendo molto codice ma riesco a gestirlo come m'interessa.

    Piccolo problema però, ho la variabile $disponibilita della suite_01 ma vorrei esportarla fuori dal foreach perché devo usarla per creare un grafico quindi trasformandola in $disponibilita_maggio_suite_01, sto provando var_dump ma non va. Come posso risolvere?

  5. #95
    Utente di HTML.it
    Registrato dal
    Apr 2011
    residenza
    Arezzo
    Messaggi
    194
    ti basta fare semplicemente, fuori dal foreach, praticamente la stessa cosa, chiaramente non con $k (che è una variabile interna al foreach, che cambia valore ad ogni ciclo), ma passando il valore che vuoi, in questo caso la chiave dell'array esatta

    Codice PHP:
    $disponibilita dispPerMese($tot2016_suite_01['Maggio'],'2016','Suite 01'); 
    usando quindi $tot2016_suite_01 o qualsiasi altro array e indicando la chiave che ti interessa.
    Riccardo Sadocchi
    Microsoft MCP C#

  6. #96
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Non so per quale motivo non funzioni fuori dal foreach ma alla fine mi hai fatto riflettere ulteriormente e sto risolvendo creandomi un nuovo foreach limitato all'elemento che mi occorre, sicuramente poco elegante ma funziona.

    Codice PHP:
    foreach($tot2016_suite_01 as $k=>$v){
        
    $disponibilita dispPerMese($k,'2016','Suite 01');
        if(
    $k == 'Maggio'){
            echo 
    "$disponibilita";
    }


  7. #97
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    360
    Progetto completato, grazie a tutti!

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.