Cuando el rango de fechas está en el mismo mes, no hay problema y me los marca bien..
Espero que alguien pueda aportarme un poco de luz..
Muchas gracias de antemano .
Código PHP:
// Nombre de los meses
$nombMes[1] = "Enero";
$nombMes[2] = "Febrero";
$nombMes[3] = "Marzo";
$nombMes[4] = "Abril";
$nombMes[5] = "Mayo";
$nombMes[6] = "Junio";
$nombMes[7] = "Julio";
$nombMes[8] = "Agosto";
$nombMes[9] = "Septiembre";
$nombMes[10] = "Octubre";
$nombMes[11] = "Noviembre";
$nombMes[12] = "Diciembre";
// Nombres de los dias
$diaSemana[0] = "Lun";
$diaSemana[1] = "Mar";
$diaSemana[2] = "Mie";
$diaSemana[3] = "Jue";
$diaSemana[4] = "Vie";
$diaSemana[5] = "Sab";
$diaSemana[6] = "Dom";
$arrayDias = $diaSemana; // Array con los dias de la semana
$meses = $nombMes; // Array con los nombres de los meses
// Obtencion del dia actual
if (!$dia)
{
$day=date('d');
}
// Obtencion del mes actual
if (!$mes)
{
$mes = date('m');
}
// Optencion del año actual
if (!$any)
{
$any = date('Y');
}
if ($mes == 12) // Comprobacion del final del año
{
$mes = 1;
$any = $any + 1;
}
echo("<table width=100% height=100%><tr height=100%>");
for ($cont = 0; $cont < 6; $cont++)
{
$numDiasMes = date(t, mktime(0, 0, 0, $mes, 1, $any)); // Numero de dias que tiene el mes
$diaEmpiezaMes = date(w, mktime(0, 0, 0, $mes, 0, $any)); // Dia de la semana que empieza el mes (lunes = 0)
$diaTerminaMes = date(w, mktime(0, 0, 0, $mes, $numDiasMes, $any)); // Dia de la semana que acaba el mes (lunes = 0)
$diaTerminaMesOffSet = 6 - $diaTerminaMes; // Celdas libres tras el ultimo dia
$numCeldas = $numDiasMes + $diaEmpiezaMes + $diaTerminaMesOffSet; // Numero de celdas para colocar los dias
if ($mes == 12)
{
$mes = 1;
}
echo
("
<td>
<table style=font-family:arial; font-size:14px; cellpadding= 1; cellspacing=1; align=center; border=1;>
<tr>
<td colspan=10>
<table align=center>
<tr>
<td>
<b>".$meses[$mes]." - $any</b>
</td>
</tr>
</table>
</td>
</tr>
<tr>
");
foreach ($arrayDias AS $key) // Marcacion de los dias de la semana
{
echo
("
<td bgcolor=#ccccff>
<b>$key</b>
</td>
");
}
echo
("
</tr>
");
for ($contDias = 1; $contDias <= $numCeldas; $contDias++) // Escritura de los dias
{
if(!$diasSemana || ($diasSemana > 6)) // Deteccion de final de la semana
{
$diasSemana = 0;
}
if ($diasSemana == 0) // Creacion primera fila de dias
{
echo
("
<tr>
");
}
if (!$numDia)
{
$numDia = 1;
}
if (($contDias > $diaEmpiezaMes) && ($numDia <= $numDiasMes))
{
if (($numDia == date('d')) && ($mes == date('m')) && ($any == date('Y'))) // Marcacion del dia actual
{
echo
("
<td bgcolor=#ffcc99>
$numDia
</td>
");
}
else
{
$marcado = false;
$id=$_GET['idproducto'];
mysql_select_db($database_base, $conection);
$query = "SELECT disponibilidadInicio, disponibilidadSalida FROM tb_disponibilidad WHERE tb_disponibilidad.idproducto = $id"; // Control de dia marcado
$rs = mysql_query($query, $conection); // Ejecucion de la consulta
$colums = mysql_num_rows($rs); // Numero de filas que se obtienen
if ($colums > 0)
{
for ($i = 0; ($i < $colums) && !$marcado; $i++)
{
$array = mysql_fetch_array($rs); // Obtencion de resultados
$entra = date("Y/m/d", strtotime($array['disponibilidadInicio'])); // Fecha de entrada
$sale = date("Y/m/d", strtotime($array['disponibilidadSalida'])); // Fecha de salida
$fEntra = explode("/", $entra); // Extraccion de los datos de la fecha de entrada
$fSalida = explode("/", $sale); // Extraccion de los datos de la fecha de salida
$anyEntra = $fEntra[0]; // Dia de la entrada
$mesEntra = $fEntra[1]; // Mes de la entrada
$diaEntra = $fEntra[2]; // Año de la entrada
$anySale = $fSalida[0]; // Dia de la salida
$mesSale = $fSalida[1]; // Mes de la salida
$diaSale = $fSalida[2]; // Año de la salida
// Marcacion de la fecha reservada
if (($any >= $anyEntra) && ($any <= $anySale)) // Comparacion del año
{
if (($mes >= $mesEntra) && ($mes <= $mesSale)) // Comparacion del mes
{
if (($numDia >= $diaEntra) && ($numDia <= $diaSale)) // Comparacion del dia
{
$marcado = true;
echo
("
<td bgcolor=#FF0000>
$numDia
</td>
");
}
}
}
}
}
if (!$marcado) // Marcacion de dias sin reserva
{
echo
("
<td bgcolor=#EEEEEE>
$numDia
</td>
");
}
}
$numDia++;
}
else // Celdas vacias
{
echo
("
<td></td>
");
}
if ($diasSemana == 6) // Deteccion del final de la semana
{
echo
("
</tr>
");
}
$diasSemana++;
}
echo
("
</table>
</td>
");
$mes++; // Aumento del numero de mes
$diasSemana = NULL; // Reinicio del contador de dias de la semana
$numDia = NULL; // Reinicio del contador del numero de dia
}
echo
("
</tr>
</table>
");