Foros del Web » Programando para Internet » PHP »

Una duda acerca del calendario, en las FAQ's

Estas en el tema de Una duda acerca del calendario, en las FAQ's en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 28/07/2008, 10:31
Usuario no validado
 
Fecha de Ingreso: marzo-2007
Mensajes: 238
Antigüedad: 17 años, 1 mes
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(137);

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(137);
function 
Calendar($mes,$ano){ 
  
$agenda= array(137);
  
$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!
  #2 (permalink)  
Antiguo 28/07/2008, 18:16
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Una duda acerca del calendario, en las FAQ's

Un código bastante enredado

Sin embargo, creo que bastaría con que cambiaras esta línea

Código PHP:
 if(($dia_actual==$diaact) && ($mes==$mesact) && ($ano==$anoact)){ 
por esto

Código PHP:
 if(( ($dia_actual==$diaact) || (in_array($dia_actual$agenda) ) && ($mes==$mesact) && ($ano==$anoact)){ 
asumiendo que cada entrada de $agenda es un día del mes agendado.


Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:45.