Tema: Calendario
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/10/2004, 21:03
Avatar de Reynier
Reynier
 
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 4 meses
Puntos: 1
Calendario

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
__________________
Ing. Reynier Pérez Mira