Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/04/2009, 11:00
kapitol
 
Fecha de Ingreso: abril-2009
Mensajes: 38
Antigüedad: 15 años, 1 mes
Puntos: 1
Coloreando un calendario...

Hola gente!

estoy trabajando con un calendario en ajax+php...la base es el calendario que encontré en la web de bmgadg dot com

la parte de ajax va bien, pero al modificar la parte php para introducirle mysql y pintar un calendario tipico de disponibilidad hotelera (segun tablas de alquileres y temporadas) comienzan los problemas...intuyo que el problema está en que coje el primeri dia del bucle y ya me pinta todo el mes del mismo color...

además de este código que dejo aquí hay css y una clase javascript que controla la navegación entre los meses y los años...

al que se tome la molestía de intentar echarme un cable, muchas gracias de antemano

Código PHP:
<? 
session_start
();

                include (
"funciones.php");
                include (
"fecha.php");

$output '';
$month $_GET['month'];
$year $_GET['year'];
    
if(
$month == '' && $year == '') { 
    
$time time();
    
$month date('n',$time);
    
$year date('Y',$time);
}

$date getdate(mktime(0,0,0,$month,1,$year));
$today getdate();
$hours $today['hours'];
$mins $today['minutes'];
$secs $today['seconds'];

if(
strlen($hours)<2$hours="0".$hours;
if(
strlen($mins)<2$mins="0".$mins;
if(
strlen($secs)<2$secs="0".$secs;

                                            
$days=date("t",mktime(0,0,0,$month,1,$year));
                                            
$start $date['wday']+1;
                                            
$mes=$date['month'];
                                                if (
$mes=="January"$mes="Enero"
                                                if (
$mes=="February"$mes="Febrero";
                                                if (
$mes=="March"$mes="Marzo";
                                                if (
$mes=="April"$mes="Abril";
                                                if (
$mes=="May"$mes="Mayo"
                                                if (
$mes=="June"$mes="Junio"
                                                if (
$mes=="July"$mes="Julio"
                                                if (
$mes=="August"$mes="Agosto"
                                                if (
$mes=="September"$mes="Setiembre";
                                                if (
$mes=="October"$mes="Octubre"
                                                if (
$mes=="November"$mes="Noviembre"
                                                if (
$mes=="December"$mes="Diciembre";                                            
                                            
$name $mes;
                                            
$year2 $date['year'];
                                            
$offset $days $start 1;                                             
 
if(
$month==12) { 
    
$next=1
    
$nexty=$year 1
} else { 
    
$next=$month 1
    
$nexty=$year
}

if(
$month==1) { 
    
$prev=12
    
$prevy=$year 1
} else { 
    
$prev=$month 1
    
$prevy=$year
}

if(
$offset <= 28$weeks=28
elseif(
$offset 35$weeks 42
else 
$weeks 35

$output .= "
<table class='cal' cellspacing='1'>
<tr>
    <td colspan='7'>
        <table class='calhead'>
        <tr>
            <td>
                <a href='javascript:navigate($prev,$prevy)'><img src='img/prev.png' /></a></td><td><b>$name $year2</b></td><td><a href='javascript:navigate($next,$nexty)'><img src='img/next.png' /></a>
            </td>
        </tr>
        </table>
    </td>
</tr>
<tr class='dayhead'>
    <td>S</td>
    <td>M</td>
    <td>T</td>
    <td>W</td>
    <td>T</td>
    <td>F</td>
    <td>S</td>
</tr>"
;

$col=1;
$cur=1;
$next=0;

        
$calcnx=conectar();
        
        
$s "select entrada, salida from registros where idapart = '".$_SESSION["id"]."'";
        
$forbook mysql_query($s,$calcnx) or die (mysql_error());    
        
$ss "select * from "$_SESSION["tablatemp"];
        
$fortemp mysql_query($ss,$calcnx) or die (mysql_error());
        
mysql_close($calcnx);
        
for(
$i=1;$i<=$weeks;$i++) { 
    if(
$next==3$next=0;
    if(
$col==1$output.="<tr class='dayrow'>"
      
    
$output.="<td valign='top' >";

                                                if(
$i <= ($days+($start-1)) && $i >= $start
                                                {
        /
booked=0;
        
$tempo=0;
        
        
//asi venía originalmente, y pintaba días unicamente en blanco, yo quiero colores
        
        //if($cur<10) {$curb="0".$cur;} else{$curb=$cur;}
        //if($month<10) {$monthb="0".$month;} else{$monthb=$month;}
        //$a=array ($year, $monthb, $curb);
        //$now=implode("-", $a);
        
        
$now=mktime(0,0,0,$month,$cur,$year);
                                                                            if (
mysql_num_rows($forbook) > 0)
                                                                            {
                                                                                while(
$filabook mysql_fetch_array($forbook))
                                                                                {
                                                                                        
$na explode("-",$filabook['entrada']);
                                                                                        
$lowDate=mktime(0,0,0,$na[1],$na[2],$na[0]);
                                                                                        
$nb explode("-",$filabook['salida']);
                                                                                        
$highDate=mktime(0,0,0,$nb[1],$nb[2],$nb[0]);
                                                                                        
                                                                                        if (
$now $lowDate && $now $highDate
                                                                                        {
                                                                                        
$booked=1;
                                                                                        break;
                                                                                        }
                                                                                }
                                                                            }
                                                            if (
$booked == 1)
                                                                    {
                                                                    
$output.="<div class='daybooked'>";
                                                                    
$output.="$cur</div></td>";
                                                                    
$cur++; 
                                                                    
$col++; 
                                                                    
$booked=0;
                                                                    }
                                                            else
                                                            {
                                                                            while(
$filatemp mysql_fetch_array($fortemp))
                                                                            {
                                                                                        
$na2 explode("-",$filatemp['principio']);
                                                                                        
$lowDatea=mktime(0,0,0,$na2[1],$na2[2],$na2[0]);
                                                                                        
$nb2 explode("-",$filatemp['final']);
                                                                                        
$highDatea=mktime(0,0,0,$nb2[1],$nb2[2],$nb2[0]);
                                                                                        
                                                                                if (
$now $lowDatea && $now $highDatea
                                                                                {
                                                                                
$tempo=$filatemp['temporada'];
                                                                                break;
                                                                                }
                                                                            }
                                                                            switch (
$tempo)
                                                                            {
                                                                            case 
1:
                                                                                    
$output.="<div class='daylow'>";
                                                                                    
$output.="$cur</div></td>";
                                                                                    
$cur++; 
                                                                                    
$col++;
                                                                                     break;
                                                                            case 
2:
                                                                                    
$output.="<div class='dayhigh'>";
                                                                                    
$output.="$cur</div></td>";
                                                                                    
$cur++; 
                                                                                    
$col++;
                                                                                      break;
                                                                            case 
3:
                                                                                    
$output.="<div class='dayspecial'>";
                                                                                    
$output.="$cur</div></td>";
                                                                                    
$cur++; 
                                                                                    
$col++;
                                                                                      break;
                                                                            default:
                                                                                    
$output.="<div class='daylow'>";
                                                                                    
$output.="$cur</div></td>";
                                                                                    
$cur++; 
                                                                                    
$col++;
                                                                                     break;
                                                                            }
                                                            }
                                                } else { 
                                                    
$output.="&nbsp;</td>"
                                                    
$col++; 
                                                }  
                                                    
                                                if(
$col==8) { 
                                                    
$output.="</tr>"
                                                    
$col=1
                                                }
                                            }
                                            
                                            
$output.="</table>";
                                            echo 
$output
    
///////// FIN ZONA CALENDARIO ?>

Última edición por kapitol; 05/04/2009 a las 11:06