Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/07/2008, 10:31
worldPeace_Plis
Usuario no validado
 
Fecha de Ingreso: marzo-2007
Mensajes: 238
Antigüedad: 19 años, 8 meses
Puntos: 5
Una duda acerca del calendario, en las FAQ's

Hola, tengo una duda acercadel calendarioque esta aqui:
/849794-post125.html

Código PHP:
// http://www.forosdelweb.com/849794-post125.html

// le agregue unos 3 dias para una agenda, pero donde va esta matriz?, aqui?
$agenda= array(1, 3, 7);

function 
DiaSemana($dia,$mes,$ano){ 
  
$numerodiasemana = date('w', mktime(0,0,0,$mes,$dia,$ano)); 
  if(
$numerodiasemana == 0){ $numerodiasemana = 6; } else { $numerodiasemana--; } 
  return 
$numerodiasemana; 
} 

function 
NombreMes($mes){ 
  switch (
$mes){ 
   case 
1:  $nombre = "Ene";  break; 
   case 
2:  $nombre = "Feb";  break; 
   case 
3:  $nombre = "Mar";  break; 
   case 
4:  $nombre = "Abr";  break; 
   case 
5:  $nombre = "May";  break; 
   case 
6:  $nombre = "Jun";  break; 
   case 
7:  $nombre = "Jul";  break; 
   case 
8:  $nombre = "Ago";  break; 
   case 
9:  $nombre = "Sep";  break; 
   case 
10: $nombre = "Oct";  break; 
   case 
11: $nombre = "Nov";  break; 
   case 
12: $nombre = "Dic";  break; 
  } 
  return 
$nombre; 
} 

function 
ultimoDia($mes,$ano){ 
  
$ultimo_dia=28; 
  while (
checkdate($mes,$ultimo_dia + 1,$ano)){ $ultimo_dia++; } 
  return 
$ultimo_dia; 
}  

# Calendario de meses 
  
$agenda= array(1, 3, 7);
function 
Calendar($mes,$ano){ 
  
$agenda= array(1, 3, 7);
  
$nombremes = NombreMes($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='100'  border='0' cellspacing='0' cellpadding='0' align='center'>"; 
  echo 
"</table>"; 
  echo 
"<table width='100'  border='0' cellspacing='0' cellpadding='0' align='center' class='calendar'>"; 
  echo 
"<tr><td colspan='7' class='normal fontbig bold alterno calendar' align='center'><a href='".basename($_SERVER['PATH_TRANSLATED'])."?mes=".($mes_anterior)."&ano=".($ano_anterior)."&sid=".session_id()."'><< </a> ".$nombremes." ".$ano." <a href='".basename($_SERVER['PATH_TRANSLATED'])."?mes=".($mes_siguiente)."&ano=".($ano_siguiente)."&sid=".session_id()."'>>> </a></td></tr>"; 
  echo 
"<tr>"; 
  echo 
"<td align='center' bgcolor='#F0F8FE'>D</td>"; 
  echo 
"<td align='center' bgcolor='#F0F8FE'>L</td>"; 
  echo 
"<td align='center' bgcolor='#F0F8FE'>M</td>"; 
  echo 
"<td align='center' bgcolor='#F0F8FE'>M</td>"; 
  echo 
"<td align='center' bgcolor='#F0F8FE'>J</td>"; 
  echo 
"<td align='center' bgcolor='#F0F8FE'>V</td>"; 
  echo 
"<td align='center' bgcolor='#F0F8FE'>S</td>"; 
  echo 
"</tr>"; 
  
$dia_actual = 1; 
  
$numero_dia = DiaSemana(1,$mes,$ano); 
  
$ultimo_dia = ultimoDia($mes,$ano); 
  
$diaact = date("d"); 
  
$mesact = date("m"); 
  
$anoact = date("Y"); 
  echo 
"<tr>"; 
  for(
$i=-1;$i<6;$i++){ 
   
//if(($dia_actual<=$diaact) && ($mes<=$mesact) && ($ano<=$anoact)){ 
   
if(($dia_actual==$diaact) && ($mes==$mesact) && ($ano==$anoact)){ 
    
$bgcolor = "#F0F8FE"; 
   }elseif((
$dia_actual>$diaact) && ($mes>=$mesact) || ($ano>$anoact)){ 
    
$bgcolor = "#D8D8D8"; 
   }elseif (
$mes>$mesact){ 
    
$bgcolor = "#D8D8D8"; 
   } 
   
//if(($dia_actual<=$diaact) && ($mes<=$mesact) && ($ano<=$anoact)){ 
   
if(($dia_actual==$diaact) && ($mes==$mesact) && ($ano==$anoact)){ 
    
$enlace = "calendar.php?action=show&dia=".$dia_actual."&mes=".$mes."&ano=".$ano."&sid=".session_id().""; 
   }else{ 
    
$enlace = ""; 
   } 
   if(
$i < $numero_dia){ 
    echo 
"<td class='calendar' bgcolor='#D8D8D8'>&nbsp;</td>"; 
   }else{ 
    echo 
"<td align='center' bgcolor='".$bgcolor."'><a href=".$enlace."><span class='info' title='Mostrar contenido de ".($dia_actual."-".$mes."-".$ano)."'>".$dia_actual."</span></a></td>"; 
    
$dia_actual++; 
   } 
  } 
  echo 
"</tr>"; 
  
$numero_dia = 0; 
  while(
$dia_actual <= $ultimo_dia){ 
   
//if(($dia_actual<=$diaact) && ($mes<=$mesact) && ($ano<=$anoact)){ 
   
if(($dia_actual==$diaact) && ($mes==$mesact) && ($ano==$anoact)){ 
    
$bgcolor = "#FFCC00"; 
   }elseif((
$mes==$mesact) && ($ano==$anoact)){
    
// AGENDA
    
for ($i=0; $i<=$ultimo_dia; $i++) {
      for(
$a=0; $a<sizeof($agenda); $a++) {
      if (
$agenda[$a]==$i) {
      
$bgcolor = "#FFCCDD"; 
      }
      }
    }
    
//fi:AGENDA
   
}elseif(($dia_actual>$diaact) && ($mes>=$mesact) || ($ano>$anoact)){ 
    
$bgcolor = "#D8D8D8"; 
   }elseif (
$mes>$mesact){ 
    
$bgcolor = "#D8D8D8"; 
   } 
   
//if(($dia_actual<=$diaact) && ($mes<=$mesact) && ($ano<=$anoact)){ 
   
if(($dia_actual==$diaact) && ($mes==$mesact) && ($ano==$anoact)){ 
    
$enlace = "calendar.php?action=show&dia=".$dia_actual."&mes=".$mes."&ano=".$ano."&sid=".session_id().""; 
   }else{ 
    
$enlace = ""; 
   } 
   if (
$numero_dia == 0) 
    echo 
"<tr>"; 
    echo 
"<td align='center' bgcolor='".$bgcolor."'><a href=".$enlace."><span class='info' title='Mostrar contenido de ".($dia_actual."-".$mes."-".$ano)."'>".$dia_actual."</span></a></td>"; 
    
$dia_actual++; 
    
$numero_dia++; 
    if (
$numero_dia == 7){ 
     
$numero_dia = 0; 
     echo 
"</tr>"; 
    } 
   } 
  for (
$i=$numero_dia;$i<7;$i++){ 
   echo 
"<td bgcolor='#D8D8D8'>&nbsp;</td>"; 
  } 
  echo 
"</tr>"; 
  echo 
"</table>"; 
}  

// APLICACION
 
$mes = isset($_GET['mes'])?$_GET['mes']:date("m");
 
$ano = isset($_GET['ano'])?$_GET['ano']:date("Y");
 
Calendar($mes,$ano); 
quisiera sombrear de igual formacomo sombrea el dia actual, algunos dias que estuvieran agendados, lo que intento es hacer que al cumplir las condiciones de anio actual y mes actual, p.e., entre a un loop para revisar que dias estarian agendados, esto leyendo una matris ($agenda)con los dias señalados

No se donde ponereste bucle, al parecer cuando cumple la condicion de mes y año actualpero no lee mi matriz, o que?

Salu2!