Foros del Web » Programando para Internet » PHP »

colorear calendario segun dia

Estas en el tema de colorear calendario segun dia en el foro de PHP en Foros del Web. hola a todos tengo un script de calendario y lo que quiero es colorear un rango de fechas tomadas de una base de datos ejemplo ...
  #1 (permalink)  
Antiguo 05/11/2008, 08:42
Avatar de jakuam  
Fecha de Ingreso: abril-2007
Mensajes: 354
Antigüedad: 17 años
Puntos: 0
colorear calendario segun dia

hola a todos tengo un script de calendario y lo que quiero es colorear un rango de fechas tomadas de una base de datos ejemplo fecha 1 y fecha 2. le paso el codigo del calendario a ver si me pueden ayudar a hacerlo..
ejemplo formato de las fechas
fecha1= 03/12/2008


Código PHP:
<?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;
}

//funcion que devuelve el último día de un mes y año dados
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 
mostrar_calendario($mes,$ano){
    
//tomo el nombre del mes que hay que imprimir
    
$nombre_mes dame_nombre_mes($mes);
    
    
//construyo la cabecera de la tabla
    
echo "<table width=200 cellspacing=3 cellpadding=2 border=0><tr><td colspan=7 align=center class=tit>";
    echo 
"<table width=100% cellspacing=2 cellpadding=2 border=0><tr><td style=font-size:10pt;font-weight:bold;color:white>";
    
//calculo el mes y ano del mes anterior
    
$mes_anterior $mes 1;
    
$ano_anterior $ano;
    if (
$mes_anterior==0){
        
$ano_anterior--;
        
$mes_anterior=12;
    }
    echo 
"<a style=color:white;text-decoration:none href=index.php?nuevo_mes=$mes_anterior&nuevo_ano=$ano_anterior>&lt;&lt;</a></td>";
       echo 
"<td align=center class=tit>$nombre_mes $ano</td>";
       echo 
"<td align=right style=font-size:10pt;font-weight:bold;color:white>";
    
//calculo el mes y ano del mes siguiente
    
$mes_siguiente $mes 1;
    
$ano_siguiente $ano;
    if (
$mes_siguiente==13){
        
$ano_siguiente++;
        
$mes_siguiente=1;
    }
    echo 
"<a style=color:white;text-decoration:none href=index.php?nuevo_mes=$mes_siguiente&nuevo_ano=$ano_siguiente>&gt;&gt;</a></td></tr></table></td></tr>";
    echo 
'    <tr>
                <td width=14% align=center class=altn>L</td>
                <td width=14% align=center class=altn>M</td>
                <td width=14% align=center class=altn>X</td>
                <td width=14% align=center class=altn>J</td>
                <td width=14% align=center class=altn>V</td>
                <td width=14% align=center class=altn>S</td>
                <td width=14% align=center class=altn>D</td>
            </tr>'
;
    
    
//Variable para llevar la cuenta del dia actual
    
$dia_actual 1;
    
    
//calculo el numero del dia de la semana del primer dia
    
$numero_dia calcula_numero_dia_semana(1,$mes,$ano);
    
//echo "Numero del dia de demana del primer: $numero_dia <br>";
    
    //calculo el último dia del mes
    
$ultimo_dia ultimoDia($mes,$ano);
    
    
//escribo la primera fila de la semana
    
echo "<tr>";
    for (
$i=0;$i<7;$i++){
        if (
$i $numero_dia){
            
//si el dia de la semana i es menor que el numero del primer dia de la semana no pongo nada en la celda
            
echo "<td></td>";
        } else {
          echo 
"<td align=center>".($dia_actual<10?"0$dia_actual":$dia_actual)."</td>"; ;
            
$dia_actual++;
        }
    }
    echo 
"</tr>";
    
    
//recorro todos los demás días hasta el final del mes
    
$numero_dia 0;
    while (
$dia_actual <= $ultimo_dia){
        
//si estamos a principio de la semana escribo el <TR>
        
if ($numero_dia == 0)
            echo 
"<tr>";
         echo 
"<td align=center>".($dia_actual<10?"0$dia_actual":$dia_actual)."</td>";
        
$dia_actual++;
        
$numero_dia++;
        
//si es el uñtimo de la semana, me pongo al principio de la semana y escribo el </tr>
        
if ($numero_dia == 7){
            
$numero_dia 0;
            echo 
"</tr>";
        }
    }
    
    
//compruebo que celdas me faltan por escribir vacias de la última semana del mes
    
for ($i=$numero_dia;$i<7;$i++){
        echo 
"<td></td>";
    }
    
    echo 
"</tr>";
    echo 
"</table>";
}    

function 
formularioCalendario($mes,$ano){
echo 
'
    <table align="center" cellspacing="2" cellpadding="2" border="0">
    <tr><form action="index.php" method="POST">'
;
echo 
'
    <td align="center" valign="top">
        Mes: <br>
        <select name=nuevo_mes>
        <option value="1"'
;
if (
$mes==1)
 echo 
"selected";
echo
'>Enero
        <option value="2" '
;
if (
$mes==2
    echo 
"selected";
echo
'>Febrero
        <option value="3" '
;
if (
$mes==3
    echo 
"selected";
echo
'>Marzo
        <option value="4" '
;
if (
$mes==4
    echo 
"selected";
echo 
'>Abril
        <option value="5" '
;
if (
$mes==5
        echo 
"selected";
echo 
'>Mayo
        <option value="6" '
;
if (
$mes==6
    echo 
"selected";
echo 
'>Junio
        <option value="7" '
;
if (
$mes==7
    echo 
"selected";
echo 
'>Julio
        <option value="8" '
;
if (
$mes==8
    echo 
"selected";
echo 
'>Agosto
        <option value="9" '
;
if (
$mes==9
    echo 
"selected";
echo 
'>Septiembre
        <option value="10" '
;
if (
$mes==10
    echo 
"selected";
echo 
'>Octubre
        <option value="11" '
;
if (
$mes==11
    echo 
"selected";
echo 
'>Noviembre
        <option value="12" '
;
if (
$mes==12
    echo 
"selected";
echo 
'>Diciembre
        </select>
        </td>'
;
echo 
'        
        <td align="center" valign="top">
        A&ntilde;o: <br>
        <select name=nuevo_ano>
        <option value="2000" '
;
if (
$ano==2000
   echo 
"selected";
echo
' >2000
        <option value="2001" '
;
if (
$ano==2001)
 echo 
"selected";
echo 
'>2001
        <option value="2002" '
;
if (
$ano==2002
   echo 
"selected";
echo 
'>2002
        <option value="2003" '
;
if (
$ano==2003
   echo 
"selected" ;
echo 
'>2003
        <option value="2004" '
;
if (
$ano==2004
   echo 
"selected" ;
echo 
'>2004
    </select>
        </td>'
;
echo 
'
    </tr>
    <tr>
        <td colspan="2" align="center"><input type="Submit" value="[ IR A ESE MES ]"></td>
    </tr>
    </table><br>
    
    <br>
    
    </form>'
;
}
?>
__________________
Jakuam
Reserva Hoteles Online
Turismo San Rafael Mendoza
  #2 (permalink)  
Antiguo 05/11/2008, 16:42
Avatar de jakuam  
Fecha de Ingreso: abril-2007
Mensajes: 354
Antigüedad: 17 años
Puntos: 0
Respuesta: colorear calendario segun dia

alguien me puede ayudar a colorear las celdas segun un rango de dias
__________________
Jakuam
Reserva Hoteles Online
Turismo San Rafael Mendoza
  #3 (permalink)  
Antiguo 05/11/2008, 16:47
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Respuesta: colorear calendario segun dia

En el bucle que recorre los días haz una comprobación para ver si está dentro de la fecha que te interesa, de ser así añade una clase css al día...

si está dentro de la fecha
$clase = coloreado
sino
$clase = normal

Y al ir a escribir el número, en la celda le dices que la clase es $clase
  #4 (permalink)  
Antiguo 06/11/2008, 05:42
Avatar de jakuam  
Fecha de Ingreso: abril-2007
Mensajes: 354
Antigüedad: 17 años
Puntos: 0
Respuesta: colorear calendario segun dia

gracias... pero quise hacerlo y no pude alguien me podria ayudar... como comprar los rangos y ponerle la clase en el bucle.. por favor
__________________
Jakuam
Reserva Hoteles Online
Turismo San Rafael Mendoza
  #5 (permalink)  
Antiguo 06/11/2008, 05:50
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años
Puntos: 16
Respuesta: colorear calendario segun dia

tenes que guardar la el dia y el mes actual en alguna variable, fijate que tenes dos bucles el primero genera los primeros dias de la semana y el otro el resto de los dias

la comprobacion seria similar a esto
Código PHP:
if($diaMes == $currentDay && $mesAct == $mes){

echo 
'<td class="current">'.$dia_actual.'</td>';

}else{

echo 
'<td >'.$dia_actual.'</td>';



  #6 (permalink)  
Antiguo 06/11/2008, 06:53
Avatar de jakuam  
Fecha de Ingreso: abril-2007
Mensajes: 354
Antigüedad: 17 años
Puntos: 0
Respuesta: colorear calendario segun dia

gracias...ya lo resolvi... de manera parecida. .. gracias de verdad
__________________
Jakuam
Reserva Hoteles Online
Turismo San Rafael Mendoza
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 07:51.