Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    contagiorni in ciclo do while

    codice:
    <?php 
    
    $colname_Recordset4 = "-1";
    if (isset($_GET['recordIDPRENOTA'])) {
      $colname_Recordset4 = (get_magic_quotes_gpc()) ? $_GET['recordIDPRENOTA'] : addslashes($_GET['recordIDPRENOTA']);
    }
    mysql_select_db($database_musica, $musica);
    $query_Recordset4 = sprintf("SELECT * FROM prenota_due WHERE idprenota = '%s'", $colname_Recordset4);
    $Recordset4 = mysql_query($query_Recordset4, $musica) or die(mysql_error());
    $row_Recordset4 = mysql_fetch_assoc($Recordset4);
    $totalRows_Recordset4 = mysql_num_rows($Recordset4);
    function converti($drmdata)
             {
                    $giorno_conv=substr($drmdata,8,2);
                    $mese_conv=substr($drmdata,5,2);
                    $anno_conv=substr($drmdata,0,4);
                    $drmdata=$giorno_conv."     ".$mese_conv."     ".$anno_conv;
                    return $drmdata;
             }
    		 
    $data_partenza = converti($row_Recordset4['data_partanza']);
    $data_arrivo =  converti($row_Recordset4['data_arrivo']);
    $data_maggiore = $data_partenza; 
    $data_minore   = $data_arrivo; 
    
    function contaGiorni($data_maggiore, $data_minore) { 
        
        $a   = explode('-', $data_maggiore); 
        $da  = explode('-', $data_minore); 
        $bisesto = 0; 
    
        $n_anni   = ($a[2] - $da[2]); 
             
        for($i = $da[2]; $i <= $a[2]; $i++) { 
            if ($i % 4 == 0) $bisesto++; 
            } 
    
        if($da[1] > 2 AND $da[2] % 4 == 0) $bisesto--; 
        if($a[1]  < 2 AND $a[2]  % 4 == 0) $bisesto--; 
    
        $n_giorni = $n_anni * 365 + $bisesto;             
    
        $giorni_da =date('z', mktime(0,0,0, $da[1], $da[0], 1970));   
        $giorni_a  =date('z', mktime(0,0,0, $a[1], $a[0], 1970)); 
    
        return $tot = $n_giorni - $giorni_da + $giorni_a; 
    } 
    ?>
    <?php do { ?>
    
    <?php  print contaGiorni($data_maggiore, $data_minore); ?>
    <?php  } while ($row_Recordset4 = mysql_fetch_assoc($Recordset4)); ?>
    Se ho due record:

    data_arrivo 11-03-2007 e data_partenza 15-03-2007
    data_arrivo 15-03-2007 e data_partenza 17-03-2007

    Perche' mi fa il calcolo solo sul 1° record e me lo riporta anche per il secondo
    invece di fare il conteggio anche per il secondo record?

  2. #2
    Così dovrebbe andare
    codice:
    <?php 
    $colname_Recordset4 = "-1";
    if (isset($_GET['recordIDPRENOTA'])) {
      $colname_Recordset4 = (get_magic_quotes_gpc()) ? $_GET['recordIDPRENOTA'] : addslashes($_GET['recordIDPRENOTA']);
    }
    mysql_select_db($database_musica, $musica);
    $query_Recordset4 = sprintf("SELECT * FROM prenota_due WHERE idprenota = '%s'", $colname_Recordset4);
    $Recordset4 = mysql_query($query_Recordset4, $musica) or die(mysql_error());
    $row_Recordset4 = mysql_fetch_assoc($Recordset4);
    $totalRows_Recordset4 = mysql_num_rows($Recordset4);
    function converti($drmdata)
             {
                    $giorno_conv=substr($drmdata,8,2);
                    $mese_conv=substr($drmdata,5,2);
                    $anno_conv=substr($drmdata,0,4);
                    $drmdata=$giorno_conv."     ".$mese_conv."     ".$anno_conv;
                    return $drmdata;
             }
    ?>
    <?php do { ?>
    <?php  
    $data_partenza = converti($row_Recordset4['data_partanza']);
    $data_arrivo =  converti($row_Recordset4['data_arrivo']);
    $data_maggiore = $data_partenza; 
    $data_minore   = $data_arrivo; 
    print contaGiorni($data_maggiore, $data_minore); ?>
    <?php  } while ($row_Recordset4 = mysql_fetch_assoc($Recordset4)); ?>
      <?php 
      function contaGiorni($data_maggiore, $data_minore) { 
        
        $a   = explode('-', $data_maggiore); 
        $da  = explode('-', $data_minore); 
        $bisesto = 0; 
    
        $n_anni   = ($a[2] - $da[2]); 
             
        for($i = $da[2]; $i <= $a[2]; $i++) { 
            if ($i % 4 == 0) $bisesto++; 
            } 
    
        if($da[1] > 2 AND $da[2] % 4 == 0) $bisesto--; 
        if($a[1]  < 2 AND $a[2]  % 4 == 0) $bisesto--; 
    
        $n_giorni = $n_anni * 365 + $bisesto;             
    
        $giorni_da =date('z', mktime(0,0,0, $da[1], $da[0], 1970));   
        $giorni_a  =date('z', mktime(0,0,0, $a[1], $a[0], 1970)); 
    
        return $tot = $n_giorni - $giorni_da + $giorni_a; 
    } 
      ?>

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.