Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/07/2009, 14:20
Avatar de C2am
C2am
 
Fecha de Ingreso: enero-2009
Ubicación: Rosario, Argentina
Mensajes: 2.005
Antigüedad: 15 años, 3 meses
Puntos: 306
Error en Función calendario

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>&nbsp;</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>&nbsp;</td>';
}
}


echo '</tr>';
}

echo '</table>';
}

}
?>


para llamar la función:

<?
require_once("maxCalendar.class.php");
$myCelandar = new maxCalendar();

$myCelandar->showCalendar(2009,01);
?>