![sonriente](http://static.forosdelweb.com/fdwtheme/images/smilies/smile.png)
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.=" </td>";
$col++;
}
if($col==8) {
$output.="</tr>";
$col=1;
}
}
$output.="</table>";
echo $output;
///////// FIN ZONA CALENDARIO ?>