Aqui tienes una funcion que hice para tales efectos
Código PHP:
function drawCalendar($curso, $mes, $ano, $funcion, $fechatope, $topehoras)
{
global $festivos;
$fecha = mktime(0, 0, 0, $mes, 1, $ano);
$i = 0;
$dias = date("t", $fecha);
while ($i < $dias/7) {
for ($j=0; $j<7; $j++) {
if (date("n", $fecha) == $mes) $dia[$i][date("w", $fecha)] = date("j", $fecha);
if (date("w", $fecha) == 6) $i++;
$fecha += 86400; // +1 dia
}
}
echo "\n".'<table class="calendario">';
echo "\n".'<tr><td colspan="7" class="mes">'.mes($mes).' / '.$ano.'</td></tr>';
echo "\n".'<thead><tr><td class="trojo">D</td><td>L</td><td>M</td><td>X</td><td>J</td><td>V</td><td>S</td></tr></thead>';
echo "\n<tbdody>";
for ($i=0; $i<count($dia); $i++) {
echo "\n\t".'<tr">';
for ($j=0; $j<7; $j++) {
$ds = @intval($dia[$i][$j]);
if ($ds > 0) {
$id = $ano.$mes.$ds;
$id2 = $ano.'-'.str_pad($mes, 2, '0', STR_PAD_LEFT).'-'.str_pad($ds, 2, '0', STR_PAD_LEFT);
if (in_array(str_pad($ds, 2, '0', STR_PAD_LEFT).'/'.str_pad($mes, 2, '0', STR_PAD_LEFT), $festivos)) $df = true; else $df = false;
$clase = "f_gris2";
if ($j != 0 && !$df && mktime(0, 0, 0, $mes, $ds, $ano)>time())
echo '<td class="'.$clase.'" id="'.$id.'"><a href="#'.$ds.'-'.$mes.'-'.$ano.'" onClick="'.$funcion.'('.$curso.', '.$ds.', '.$mes.', '.$ano.', \''.$fechatope.'\', '.$topehoras.');">'.$ds.'</a></td>';
else {
echo '<td class="f_gris2';
if ($df) echo " trojo bold"; // festivos
elseif ($j == 0) echo " trojo"; // domingos
elseif (time() > mktime(0, 0, 0, $mes, $ds, $ano)) $ds = "<del>$ds</del>";
echo '">'.$ds.'</td>';
}
}
else echo '<td> </td>';
}
echo '</tr>';
}
echo "\n</tbody>";
echo "\n</table>";
}
function mes($mes) {
switch ($mes) {
case 1: return "enero";
case 2: return "febrero";
case 3: return "marzo";
case 4: return "abril";
case 5: return "mayo";
case 6: return "junio";
case 7: return "julio";
case 8: return "agosto";
case 9: return "septiembre";
case 10: return "octubre";
case 11: return "noviembre";
case 12: return "diciembre";
}
}
Modificala a tu gusto y necesidad
Salu2 ^^