Buenas, estoy tratando de hacer funcionar esta función, valga la redundancia, pero no sé por qué cuando se generan los meses de agosto y septiembre aparece el mes actual.
Probé cambiando el mes en mi pc, y sigue con ese error.
Es decir en vez de agosto, dice julio, y si cambio la fecha como dije anteriormente, a enero (por ejemplo) en vez de agosto dice enero, y lo mismo pasa con septiembre.
el resto de los meses se generan sin error.
el error parece producirse en la variable $referenceDay....
<?php
class maxCalendar{
function showCalendar($year=0,$month=0){
// Obtenga hoy, día de referencia, primer día y el último día información
if (($year == 0) || ($month == 0)){
$referenceDay = getdate();
} else {
$referenceDay = getdate(mktime(0,0,0,$month,1,$year));
}
$firstDay = getdate(mktime(0,0,0,$referenceDay['mon'],2,$referenceDay['year']));
$lastDay = getdate(mktime(0,0,0,$referenceDay['mon']+1,0,$referenceDay['year']));
$today = getdate();
// traduzco meses al español
if ($referenceDay['mon'] == 1){$mes = "Enero";}
if ($referenceDay['mon'] == 2){$mes = "Febrero";}
if ($referenceDay['mon'] == 3){$mes = "Marzo";}
if ($referenceDay['mon'] == 4){$mes = "Abril";}
if ($referenceDay['mon'] == 5){$mes = "Mayo";}
if ($referenceDay['mon'] == 6){$mes = "Junio";}
if ($referenceDay['mon'] == 7){$mes = "Julio";}
if ($referenceDay['mon'] == 8){$mes = "Agosto";}
if ($referenceDay['mon'] == 9){$mes = "Septiembre";}
if ($referenceDay['mon'] == 10){$mes = "Octubre";}
if ($referenceDay['mon'] == 11){$mes = "Noviembre";}
if ($referenceDay['mon'] == 12){$mes = "Diciembre";}
// Crear una tabla con la información necesaria de cabecera
echo '<table class="month">';
echo ' <tr><th colspan="7">'.$mes." - ".$referenceDay['year']."</th></tr>";
echo ' <tr class="days"><td>Dom</td><td>Lun</td><td>Mar</td><td>Mie</td><td>Jue</td><td>Vie</td><td>Sab</td></tr>';
// Mostrar la primera fila de la agenda con la posición correcta
echo '<tr>';
if ($firstDay['wday'] == 0) {$firstDay['wday'] = 7;}
for($i=1;$i<$firstDay['wday'];$i++){
echo '<td> </td>';
}
$actday = 0;
for($i=$firstDay['wday'];$i<=7;$i++){
$actday++;
if (($actday == $today['mday']) && ($today['mon'] == $month)) {
$class = ' class="actday"';
} else {
$class = '';
}
echo "<td$class>$actday</td>";
}
echo '</tr>';
//Obtener el número de semanas se completa en el mes
$fullWeeks = floor(($lastDay['mday']-$actday)/7);
for ($i=0;$i<$fullWeeks;$i++){
echo '<tr>';
for ($j=0;$j<7;$j++){
$actday++;
if (($actday == $today['mday']) && ($today['mon'] == $month)) {
$class = ' class="actday"';
} else {
$class = '';
}
echo "<td$class>$actday</td>";
}
echo '</tr>';
}
//Ahora visualizar el resto del mes
if ($actday < $lastDay['mday']){
echo '<tr>';
for ($i=0; $i<7;$i++){
$actday++;
if (($actday == $today['mday']) && ($today['mon'] == $month)) {
$class = ' class="actday"';
} else {
$class = '';
}
if ($actday <= $lastDay['mday']){
echo "<td$class>$actday</td>";
}
else {
echo '<td> </td>';
}
}
echo '</tr>';
}
echo '</table>';
}
}
?>
para llamar la función:
<?
require_once("maxCalendar.class.php");
$myCelandar = new maxCalendar();
$myCelandar->showCalendar(2009,01);
?>