uffff como te complicas la vida... jeje
por este foro ronda un calendario mio que puede que te sirva, pero lo voy a "personalizar" un poco para ti, quedaría mas o menos así:
Código PHP:
<?php
$anyo=date("Y");
$r=0; //variable que uso para que cuando cree 4 meses, los siguientes los ponga debajo de estos. Para que quede bien
for($i=1; $i<=12; $i++) //bucle con los 12 meses del año y sus nombes, que usaremos posteriormente
{
switch($i)
{
case 1:
$mes_nombre="Enero";
break;
case 2:
$mes_nombre="Febrero";
break;
case 3:
$mes_nombre="Marzo";
break;
case 4:
$mes_nombre="Abril";
break;
case 5:
$mes_nombre="Mayo";
break;
case 6:
$mes_nombre="Junio";
break;
case 7:
$mes_nombre="Julio";
break;
case 8:
$mes_nombre="Agosto";
break;
case 9:
$mes_nombre="Septiembre";
break;
case 10:
$mes_nombre="Octubre";
break;
case 11:
$mes_nombre="Nobiembre";
break;
case 12:
$mes_nombre="Diciembre";
break;
}
echo '<table border="0" align="left" cellpadding="0" cellspacing="0" id="meses"><tr>';
echo '<td colspan="7" bgcolor="0000FF" ><font color="FFFFFF"> '.$mes_nombre.' - '.$anyo.'</font></td>';
$ultimo_dia = date("t",mktime(0, 0, 0, $i, 1, $anyo)); // ultimo dia del mes dado //
echo '<tr><td align="center">L</td><td align="center">M</td><td align="center">M</td><td align="center">J</td><td align="center">V</td><td align="center">S</td><td align="center">D</td></tr>';
echo '<tr>';
for($d=1; $d<=$ultimo_dia; $d++)// crear los dias
{
if($d==1)
{
$dia_name = date("D",mktime(0, 0, 0, $i, 1, $anyo)); //nombre del dia 1
if($dia_name=="Mon"){}
if($dia_name=="Tue"){echo "<td> </td>";}
if($dia_name=="Wed"){echo "<td colspan='2'> </td>";}
if($dia_name=="Thu"){echo "<td colspan='3'> </td>";}
if($dia_name=="Fri"){echo "<td colspan='4'> </td>";}
if($dia_name=="Sat"){echo "<td colspan='5'> </td>";}
if($dia_name=="Sun"){echo "<td colspan='6'> </td>";}
// esto lo hacemos para que el calendario quede bien los primeros dias, por ejemplo, si el primer dia del mes fuera un jueves, no podriamos ponerlo en la primera columna.
//de esta manera solucuionamos el problema
}
$dia_nombre = date("D",mktime(0, 0, 0, $i, $d, $anyo)); //nombre del dia
if($dia_nombre=="Sun" || $dia_nombre=="Sat") //distinguimos si es sabado o domingo para lo siguiente:
{
if($dia_nombre=="Sun")
{
//si es domingo, hacemos que el calendario vaje a la siguiente fila, para que quiede bien, ademas lo marcamos de color rojo.
echo '<td bgcolor="#FF0000" align="center"><font color="#FFFFFF"><b> '.$d.' </b></font></td>';
echo '</tr><tr>';
}
else
{
//si es sabado, lo marcamos de color rojo
echo '<td bgcolor="#FF0000" align="center"><font color="#FFFFFF"><b> '.$d.' </b></font></td>'; //si es sabado, lo marcamos de color rojo
}
}
else
{
$comprobar=$d.'/'.$i;
if(in_array($comprobar,$array_dias_festivos)) // si ha de estar marcado con un color...
{
echo '<td bgcolor="#0000FF" align="center"><font color="#FFFFFF"><b> '.$d.' </b></font></td>';
}
else // si es un dia normal...
{
echo '<td align="center"> '.$d.' </td>';
}
}
}
echo '</tr></table>';
$r++;
//if($r>=4){ echo '<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />'; $r=0;}
}
?>
Solo tendrías que poner los dias festivos en un array con "formato" dia/mes en el array $array_dias_festivos
y listo! espero que te sirva