Código PHP:
En internet hay muchos códigos que son más robustos que el que estoy presentando, como por ejemplo http://www.easyphpcalendar.com/. El propósito de este código es para que tengan una idea de que con PHP se pueden crear este tipo de aplicaciones sin escribir tanto código. Si se fijan solo tiene 11 líneas de código de PHP (sin contar lo que está junto con el HTML y podía ser menos, esto es a causa de las líneas que contienen código de javascript y la parte que añade los td al final como parte de la demostración de lo que se puede hacer con CSS).Ver original
<?php /** * date('F') -> Una representación textual completa de un mes, como enero o marzo * date('Y') -> Una representación numérica completa de un año, 4 dígitos */ $calendar = ''; for($i=1; $i<=$lastDayOfMonth; $i++){ $calendar .= ($numDayWeek == 0 && $i != 1) ? '</tr><tr>' : ''; $calendar .= ($i == 1 && $numDayWeek > 0) ? '<td colspan="' . $numDayWeek . '" class="opac"></td><td onclick="alert(\'' . $js . '\')">' . $i . '</td>' : '<td onclick="alert(\'' . $js . '\')">' . $i . '</td>'; $calendar .= ($i == $lastDayOfMonth && (6 - $numDayWeek) > 0) ? '<td colspan="' . (6 - $numDayWeek) . '" class="opac">' : ''; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <style> *{margin: 0; padding: 0;} table{ width: 250px; height: 300px; } td{ text-align: center; cursor: pointer; background-color: #369; color: #fff; } .opac{ background-color: #6698c7; } </style> </head> <body> <table> <tr> <th colspan="7"><?php echo $arrDate[0]; ?> <?php echo $arrDate[1]; ?></th> </tr><tr> <th colspan="3"><a href="<?php echo $_SERVER['PHP_SELF']; ?>?m=<?php echo ($m - 12); ?>"><<<?php echo $arrDate[1] - 1 ?></th> <th></th> <th colspan="3"><a href="<?php echo $_SERVER['PHP_SELF']; ?>?m=<?php echo ($m + 12); ?>"><?php echo $arrDate[1] + 1; ?>>></a></th> </tr><tr> <th>S</th> <th>M</th> <th>T</th> <th>W</th> <th>T</th> <th>F</th> <th>S</th> </tr><tr> <?php echo $calendar; ?> </tr><tr> <th><a href="<?php echo $_SERVER['PHP_SELF']; ?>?m=<?php echo ($m - 1); ?>"><<</a></th> <th colspan="5"></th> <th><a href="<?php echo $_SERVER['PHP_SELF']; ?>?m=<?php echo ($m + 1); ?>">>></a></th> </tr> </table> </body> </html>
Notas:
2011-01-29 -> Corrección en la variable $arrDate, se corrigió error de que cuando el último día corriente es mayor al último día del siguiente mes, brinca al mes que tiene la misma cantidad de día. Se cambio del formato strtotime($m. ' month') a strtotime('First day of ' . $m . ' month').
2012-08-09 -> Se quitó algunas letras de la variable arrDate que no se estaban usando en el código