Ver Mensaje Individual
  #36 (permalink)  
Antiguo 26/01/2016, 05:17
Avatar de manyblue
manyblue
 
Fecha de Ingreso: marzo-2008
Mensajes: 329
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Organizar Precios y Temporadas

x_atrix MUCHÍSIMAS GRACIAS.
Joder me ha costado pero ya está, creo.
El código quedaría así:
Código PHP:
  <?php
      
      $desde 
date('d/m'strtotime($_GET['FDesde']));
      
$hasta date('d/m'strtotime($_GET['FHasta']));

      
      class 
Temporadas {
       
          protected 
$temporadas = array(); 
      
       
          protected 
$acumulador 0.0;
       
          public function 
__construct($baja$media$alta$especial) {
              
$this->temporadas['baja']      = $baja;
              
$this->temporadas['media']     = $media;
              
$this->temporadas['alta']      = $alta;
              
$this->temporadas['especial']  = $especial;
          }
       
          protected function 
esTemporada($temporada$dia) {
              foreach(
$this->temporadas[$temporada] as $rango) {
                  
$desde $this->getTime($rango[0]);
                  
$hasta $this->getTime($rango[1]);
       
                  if (
$dia >= $desde && $dia <= $hasta) {
                      return 
true;
                  }
              }
       
              return 
false;
          }
       
          public function 
esTemporadaBaja($dia) {
              return 
$this->esTemporada('baja'$dia);
          }
       
          public function 
esTemporadaMedia($dia) {
              return 
$this->esTemporada('media'$dia);
          }
       
          public function 
esTemporadaAlta($dia) {
              return 
$this->esTemporada('alta'$dia);
          }
       
          public function 
esEspecial($dia) {
              return 
$this->esTemporada('especial'$dia);
          }
       
          public function 
acumular($precio) {
              
$this->acumulador += floatval($precio);
          }
       
          public function 
precioTotal() {
              return 
$this->acumulador;
          }
       
          public function 
getTime($dia) {
              
// Cambia el orden para strtotime, es mm/dd/yyyy
      
              
list($dia$mes) = explode('/'$dia);
              return 
strtotime($mes '/' $dia '/' date('Y'));
          }
      }
      
    
     
///////////////////////////////
        //CARGAR TEMPORADA BAJA
        
mysql_select_db($database_Conexion_db_WebReservas$Conexion_db_WebReservas);
        
$query_ConsultaTB sprintf("SELECT * FROM tbl_temporadas_hotel WHERE tbl_temporadas_hotel.refHotel = %s AND      strNombreTemporadaHotel='Baja'"GetSQLValueString($varHotelTemporada_ConsultaTemporadasHotel"int"));
        
$ConsultaTB mysql_query($query_ConsultaTB$Conexion_db_WebReservas) or die(mysql_error());
        
$row_ConsultaTB mysql_fetch_assoc($ConsultaTB);
        
$totalRows_ConsultaTB mysql_num_rows($ConsultaTB);
        
$temporadaBaja=array();        
         do {                           
           
$t1=str_pad($row_ConsultaTB["strDiaDesde"], 2'0'STR_PAD_LEFT)."/".str_pad($row_ConsultaTB["strMesDesde"], 2'0'STR_PAD_LEFT);
           
$t2=str_pad($row_ConsultaTB["strDiaHasta"], 2'0'STR_PAD_LEFT)."/".str_pad($row_ConsultaTB["strMesHasta"], 2'0'STR_PAD_LEFT);
           
$vector=array($t1$t2);
           
array_push($temporadaBaja$vector);
         } while (
$row_ConsultaTB mysql_fetch_assoc($ConsultaTB)); 
         
//print_r($temporadaBaja);
         //CARGAR TEMPORADA ALTA
        
mysql_select_db($database_Conexion_db_WebReservas$Conexion_db_WebReservas);
        
$query_ConsultaTB sprintf("SELECT * FROM tbl_temporadas_hotel WHERE tbl_temporadas_hotel.refHotel = %s AND      strNombreTemporadaHotel='Media'"GetSQLValueString($varHotelTemporada_ConsultaTemporadasHotel"int"));
        
$ConsultaTB mysql_query($query_ConsultaTB$Conexion_db_WebReservas) or die(mysql_error());
        
$row_ConsultaTB mysql_fetch_assoc($ConsultaTB);
        
$totalRows_ConsultaTB mysql_num_rows($ConsultaTB);
        
$temporadaMedia=array();        
         do {                           
           
$t1=str_pad($row_ConsultaTB["strDiaDesde"], 2'0'STR_PAD_LEFT)."/".str_pad($row_ConsultaTB["strMesDesde"], 2'0'STR_PAD_LEFT);
           
$t2=str_pad($row_ConsultaTB["strDiaHasta"], 2'0'STR_PAD_LEFT)."/".str_pad($row_ConsultaTB["strMesHasta"], 2'0'STR_PAD_LEFT);
           
$vector=array($t1$t2);
           
array_push($temporadaMedia$vector);
         } while (
$row_ConsultaTB mysql_fetch_assoc($ConsultaTB));  
         
//print_r($temporadaMedia);
         //CARGAR TEMPORADA MEDIA
        
mysql_select_db($database_Conexion_db_WebReservas$Conexion_db_WebReservas);
        
$query_ConsultaTB sprintf("SELECT * FROM tbl_temporadas_hotel WHERE tbl_temporadas_hotel.refHotel = %s AND      strNombreTemporadaHotel='Alta'"GetSQLValueString($varHotelTemporada_ConsultaTemporadasHotel"int"));
        
$ConsultaTB mysql_query($query_ConsultaTB$Conexion_db_WebReservas) or die(mysql_error());
        
$row_ConsultaTB mysql_fetch_assoc($ConsultaTB);
        
$totalRows_ConsultaTB mysql_num_rows($ConsultaTB);
        
$temporadaAlta=array();        
         do {                           
           
$t1=str_pad($row_ConsultaTB["strDiaDesde"], 2'0'STR_PAD_LEFT)."/".str_pad($row_ConsultaTB["strMesDesde"], 2'0'STR_PAD_LEFT);
           
$t2=str_pad($row_ConsultaTB["strDiaHasta"], 2'0'STR_PAD_LEFT)."/".str_pad($row_ConsultaTB["strMesHasta"], 2'0'STR_PAD_LEFT);
           
$vector=array($t1$t2);
           
array_push($temporadaAlta$vector);
         } while (
$row_ConsultaTB mysql_fetch_assoc($ConsultaTB)); 
         
        
//CARGAR TEMPORADA ESPECIAL
        
mysql_select_db($database_Conexion_db_WebReservas$Conexion_db_WebReservas);
        
$query_ConsultaTB sprintf("SELECT * FROM tbl_temporadas_hotel WHERE tbl_temporadas_hotel.refHotel = %s AND      strNombreTemporadaHotel='Especial'"GetSQLValueString($varHotelTemporada_ConsultaTemporadasHotel"int"));
        
$ConsultaTB mysql_query($query_ConsultaTB$Conexion_db_WebReservas) or die(mysql_error());
        
$row_ConsultaTB mysql_fetch_assoc($ConsultaTB);
        
$totalRows_ConsultaTB mysql_num_rows($ConsultaTB);
        
$especial=array();        
         do {                           
            
$t1=str_pad($row_ConsultaTB["strDiaDesde"], 2'0'STR_PAD_LEFT)."/".str_pad($row_ConsultaTB["strMesDesde"], 2'0'STR_PAD_LEFT);
           
$t2=str_pad($row_ConsultaTB["strDiaHasta"], 2'0'STR_PAD_LEFT)."/".str_pad($row_ConsultaTB["strMesHasta"], 2'0'STR_PAD_LEFT);
           
$vector=array($t1$t2);
           
array_push($especial$vector);
         } while (
$row_ConsultaTB mysql_fetch_assoc($ConsultaTB)); 
          
   
      
// Precios por temporada
      
      
$precioBaja     number_format($row_ConsultaHabitaciones['intPrecio_Baja'], 2) . ' €';
      
$precioMedia    number_format($row_ConsultaHabitaciones['intPrecio_Media'], 2) . ' €';
      
$precioAlta     number_format($row_ConsultaHabitaciones['intPrecio_Alta'], 2) . ' €';
      
$precioEspecial number_format($row_ConsultaHabitaciones['intPrecio_Especial'], 2) . ' €';
       
      
$helper = new Temporadas($temporadaBaja$temporadaMedia$temporadaAlta$especial);
       
      
// Fechas seleccionadas
      
      
$inicio $helper->getTime($desde);
      
$final  $helper->getTime($hasta);
       
       
      for (
$i $inicio$i $final$i += 60 60 24) {
        
       
          if (
$helper->esEspecial($i)) {
              
// Acumular precio
      
              
$helper->acumular($precioEspecial);
               
"<td>".date('d/m/Y',$i)."</td><td>Precio Especial</td><td>$precioEspecial</td>";
       
          } else if (
$helper->esTemporadaAlta($i)) {
              
// Acumular precio
      
              
$helper->acumular($precioAlta);
               
"<td>".date('d/m/Y',$i)."</td><td>Temporada Alta</td><td>$precioAlta</td>";
       
          } else if (
$helper->esTemporadaMedia($i)) {
              
// Acumular precio
      
              
$helper->acumular($precioMedia);
               
"<td>".date('d/m/Y',$i)."</td><td>Temporada Media</td><td>$precioMedia</td>";
       
          } else if (
$helper->esTemporadaBaja($i)) {
              
// Acumular precio
      
              
$helper->acumular($precioBaja);
               
"<td>".date('d/m/Y',$i)."</td><td>Temporada baja</td><td>$precioBaja</td>";
       
          }
       
          
      }
       
      
$total $helper->precioTotal();
?>
Tema zanjado, muchísimas gracias y un saludo: Manyblue