Panowie, spójrzcie proszę w poniższy kalendarz:
w linii:
$days_in_this_month = cal_days_in_month(CAL_GREGORIAN, $month, $year);
oraz w linii
$days_in_last_month = cal_days_in_month(CAL_GREGORIAN, $month_last, $year_last);
rzuca błędem Warning: cal_days_in_month() [function.cal-days-in-month]: invalid date. in
Problem pojawia się , gdy próbuje w kalendarzu przewinąć o kolejne 3 miesiące.
function draw_cal($id_item, $month, $year, $manage_type="Wolne"){
$first_week_day = $this_month["wday"];
$days_in_this_month = cal_days_in_month(CAL_GREGORIAN, $month, $year);
$day_counter_tot = 0;
$month_last = $month - 1;
$year_last = $year;
if($month_last < 1){
$month_last = 12;
$year_last = $year - 1;
}
$days_in_last_month = cal_days_in_month(CAL_GREGORIAN, $month_last, $year_last);
if($show_week_num) $list_day_titles='<li class="weeknum_spacer"></li>';
if(AC_START_DAY=="sun"){
for($k=0; $k<7; $k++){
$weekday = mb_substr($lang["day_".$k.""],0,1,'UTF-8');
$list_day_titles.='<li class="cal_weekday"> '.$weekday.'</li>';
}
}else{
if ($first_week_day == 0) $first_week_day =7;
for($k=1; $k<=7; $k++){
if($k==7) $weekday = mb_substr($lang["day_0"][0],0,1,'UTF-8');
else $weekday = mb_substr($lang["day_".$k.""],0,1,'UTF-8');
$list_day_titles.='<li title="'.$lang["day_".$k.""].'"> '.$weekday.'</li>';
}
}
$j=1;
if(AC_START_DAY=="sun")
$first_week_day_start = $first_week_day; # start niedziela
else
$first_week_day = $first_week_day-1; # start poniedziałek
$row_counter=0;
if($first_week_day!=7){
if($show_week_num) $list_days.='<li class="weeknum">-</li>';
$last_month_start_num=$days_in_last_month-$first_week_day+1;
for($week_day = 0; $week_day < $first_week_day; $week_day++){
$list_days.='<li class="cal_empty">'.$last_month_start_num.'</li>';
++$last_month_start_num;
++$j;
++$day_counter_tot;
if($day_counter_tot % 7==1) ++$row_counter;
}
}
$week_day=$j;
$pdo = new db_connect();
$sql = $pdo->prepare("
SELECT
t1.the_date,
t2.class,
t2.desc_pl AS the_state
FROM
bookings AS t1
LEFT JOIN bookings_states AS t2 ON t2.id=t1.id_state
WHERE
t1.id_item=".$id_item."
AND MONTH(t1.the_date)=".$month."
AND YEAR(t1.the_date)=".$year."
");
$sql->execute();
while($row = $sql->fetch()){
$booked_days[$row["the_date"]]=array("class"=>$row["class"],"state"=>$row["the_state"]); }
for($day_counter = 1; $day_counter <= $days_in_this_month; $day_counter++){
$day_classes = "";
$day_title_state= " - ".$lang["available"];
$day_classes.=' clickable';
$date_timestamp = mktime(0
,0
,0
, $month,($day_counter),$year);
$week_num=date("W",$date_timestamp); if($week_num!=$last_week_num){
}
if($date_timestamp==$today_timestamp) $day_classes.=' today';
$date_db = $year."-".sprintf("%02s",$month)."-".sprintf("%02s",$day_counter);
if(AC_DATE_DISPLAY_FORMAT=="pl") $date_format = $month."/".$day_counter."/".$year;
else $date_format = $day_counter."/".$month."/".$year;
$day_classes.=" ".$booked_days[$date_db]["class"];
$day_title_state=" - ".$booked_days[$date_db]["state"];
}
if( $date_timestamp<$today_timestamp){
$day_classes.=" past";
if(AC_ACTIVE_PAST_DATES=="off"){
$day_classes=str_replace(' clickable','',$day_classes); }
}
$day_num=$getdate["wday"]+1;
if ($day_num % 7 == 1) $day_classes.=' weekend';
elseif ($day_num % 6 == 1) $day_classes.=' weekend';
$list_days .= '
<li class="'.$day_classes.' " id="date_'.$date_db.'" title="'.$date_format.$day_title_state.'" data-date="'.$date_format.'">'.$day_counter.'</li>';
$week_day %= 7;
++$week_day;
++$day_counter_tot;
if($show_week_num){
if ($week_day==1) $list_days .= '<li class="weeknum">'.$week_num.'</li>';
}
$last_week_num=$week_num;
if($day_counter_tot % 7==1) ++$row_counter;
}
$next_month_day=1;
while($row_counter<6){
for($till_day = $week_day; $till_day <=7; $till_day++){
$list_days .= '<li class="cal_empty">'.$next_month_day.'</li>';
++$next_month_day;
++$day_counter_tot;
if($day_counter_tot % 7==1) ++$row_counter;
}
$week_day=1;
}
if($week_day > 1){
for($till_day = $week_day; $till_day <=7; $till_day++){
$list_days .= '<li class="cal_empty">'.$next_month_day.'</li>';
++$next_month_day;
++$day_counter_tot;
}
}
$the_cal='
<div id="'.$month.'_'.$year.'" class="cal_title">'.$lang["month_".$month.""].' '.$year.'</div>
<ul class="cal_weekday">
'.$list_day_titles.'
</ul>
<ul>
'.$list_days.'
</ul>
<div class="clear"></div>
';
return $the_cal;
}
// plik językowy
include('lang/pl.lang.php');
$id_item = $_GET['id_item'];
$the_month = $_GET['month'];
$the_year = $_GET['year'];
if($id_item=="") die("no item defined"); if($the_month=="") die("no month defined"); if($the_year=="") die("no year defined");
// Wyświetlenie kalendarza.
echo draw_cal
($id_item,$the_month,$the_year);