Hola:
Estoy haciendo un calendario para que los usuarios puedan ver las noticias de mi web clasificadas no solo por categoria sino por dias y meses tambien. He estado revisando y en DesarrolloWeb hay un tutorial muy bueno al respecto. He logrado modificar el codigo y adaptarlo a mis necesidades pero me queda una pequeña duda. Este el el codigo en cuestion:
Código PHP:
function calcula_numero_dia_semana($dia,$mes,$ano){
$numerodiasemana = date('w', mktime(0,0,0,$mes,$dia,$ano));
if ($numerodiasemana == 0)
$numerodiasemana = 6;
else
$numerodiasemana--;
return $numerodiasemana;
}
function ultimoDia($mes,$ano){
$ultimo_dia=28;
while (checkdate($mes,$ultimo_dia + 1,$ano)){
$ultimo_dia++;
}
return $ultimo_dia;
}
function dame_nombre_mes($mes){
switch ($mes){
case 1:
$nombre_mes="Enero";
break;
case 2:
$nombre_mes="Febrero";
break;
case 3:
$nombre_mes="Marzo";
break;
case 4:
$nombre_mes="Abril";
break;
case 5:
$nombre_mes="Mayo";
break;
case 6:
$nombre_mes="Junio";
break;
case 7:
$nombre_mes="Julio";
break;
case 8:
$nombre_mes="Agosto";
break;
case 9:
$nombre_mes="Septiembre";
break;
case 10:
$nombre_mes="Octubre";
break;
case 11:
$nombre_mes="Noviembre";
break;
case 12:
$nombre_mes="Diciembre";
break;
}
return $nombre_mes;
}
function Calendar($mes,$ano,$categoria){
$nombre_mes = dame_nombre_mes($mes);
$mes_anterior = $mes - 1;
$ano_anterior = $ano;
if ($mes_anterior == 0){
$ano_anterior--;
$mes_anterior = 12;
}
$mes_siguiente = $mes + 1;
$ano_siguiente = $ano;
if ($mes_siguiente==13){
$ano_siguiente++;
$mes_siguiente=1;
}
echo "<table width='15%' border='0' cellspacing='1' cellpadding='0' class='panel table'>";
echo "<tr>";
echo "<td colspan='7' class='padding font topics bold tr' align='center'><span class='info' title='Ir al mes anterior'><a href='noticias.php?categoria=".$categoria."&mes=".$mes_anterior."&ano=".$ano_anterior."&jcgrmsid=".session_id()."'><<</a></span> ".$nombre_mes." ".$ano." <span class='info' title='Ir al mes siguiente'><a href='noticias.php?categoria=".$categoria."&mes=".$mes_siguiente."&ano=".$ano_siguiente."&jcgrmsid=".session_id()."'>>></a></span> </td>";
echo "</tr>";
echo "<tr>";
echo "<td class='padding font bold' align='center'>D</td>";
echo "<td class='padding font bold' align='center'>L</td>";
echo "<td class='padding font bold' align='center'>M</td>";
echo "<td class='padding font bold' align='center'>M</td>";
echo "<td class='padding font bold' align='center'>J</td>";
echo "<td class='padding font bold' align='center'>V</td>";
echo "<td class='padding font bold' align='center'>S</td>";
echo "</tr>";
$dia_actual = 1;
$numero_dia = calcula_numero_dia_semana(1,$mes,$ano);
$ultimo_dia = ultimoDia($mes,$ano);
echo "<tr>";
for($i=-1;$i<6;$i++){
if($i < $numero_dia){
echo "<td></td>";
}else{
echo "<td align='center' class='padding font'><span class='info' title='Noticias de ".$dia_actual."/".$mes."/".$ano."'><a href='noticias.php?accion=mostrar&categoria=".$categoria."&dia=".$dia_actual."&mes=".$mes."&ano=".$ano."&jcgrmsid=".session_id()."'>".$dia_actual."</a></span></td>";
$dia_actual++;
}
}
echo "</tr>";
$numero_dia = 0;
while ($dia_actual <= $ultimo_dia){
if ($numero_dia == 0)
echo "<tr>";
echo "<td align='center' class='padding font'><span class='info' title='Noticias de ".$dia_actual."/".$mes."/".$ano."'><a href='noticias.php?accion=mostrar&categoria=".$categoria."&dia=".$dia_actual."&mes=".$mes."&ano=".$ano."&jcgrmsid=".session_id()."'>".$dia_actual."</a></span></td>";
$dia_actual++;
$numero_dia++;
if ($numero_dia == 7){
$numero_dia = 0;
echo "</tr>";
}
}
for ($i=$numero_dia;$i<7;$i++){
echo "<td></td>";
}
echo "</tr>";
echo "</table>";
}
y entonces la llamada es de esta forma:
Código PHP:
$mes = date("m");
$ano = date("Y");
Calendar($mes,$ano,$_GET['categoria']);
ahora lo que quiero es que por ejemplo si el mes es Octubre no me ponga link a los dias que todavia no han pasado por ejemplo si hoy es 20 no tiene porque ponerle link al dia 31 ni nada por el estilo. Lo he revisado pero no encuentro como hacerlo.
Salu2