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