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()){ } for($day_counter = 1; $day_counter <= $days_in_this_month; $day_counter++){ $day_classes = ""; $day_title_state= " - ".$lang["available"]; $day_classes.=' clickable'; if($week_num!=$last_week_num){ } if($date_timestamp==$today_timestamp) $day_classes.=' today'; 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_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']; // Wyświetlenie kalendarza.