禁用datepicker中id = $ id的所有日期

您好,我首先有这样的表格:agregareserva.php:

ID 1 ID 2

在GUImostrarcalendario.php我有:

 query($sql1); ?> num_rows>0):?> fetch_array()):?> modify( '+1 day' ); $interval = new DateInterval('P1D'); $daterange = new DatePeriod($begin, $interval ,$end); $dates_ar = []; foreach ($daterange as $date) { $dates_ar[] = $date->format("Ymd"); } $disabled_dates = '"' . implode('", "', $dates_ar) .'"'; ?>  $(function() { var disabledDays = []; var date = new Date(); jQuery(document).ready(function() { $( "#datepicker9").datepicker({ dateFormat: 'Ym-d', beforeShowDay: function(date) { var m = date.getMonth(), d = date.getDate(), y = date.getFullYear(); for (i = 0; i < disabledDays.length; i++) { if($.inArray(y + '-' + (m+1) + '-' + d,disabledDays) != -1) { //return [false]; return [true, 'ui-state-active', '']; } } return [true]; } }); }); });      

此代码用于在datepicker中显示预订中的所有日期(预留),当在输入选择中选择id_habitacion(id room)时。

此代码正常工作但仅在datepicker中显示数据库中的第一条记录,例如id_habitacion = 1的表:

在此处输入图像描述

我预订此ID的所有日期

我的代码导致datepicker:

在此处输入图像描述

仅显示一个预订日期

最后我需要datepicker显示所有日期我在表格中的显示方式。

Thankss。

您的代码当前创建了多个实例

 `$( "#datepicker9").datepicker({` 

每个日期范围一个。 您需要将代码更改为仅执行一次 – 因此,在while循环之外

这需要在wile循环之外定义$ date_ar

此外,您不必要地使用连续的PHP代码片段

代码应如下所示

 query($sql1); $dates_ar = []; if($query->num_rows>0) { while ($r=$query->fetch_array()) { $begin = new DateTime( $r["llegada"] ); $end = new DateTime( $r["salida"] ); $end = $end->modify( '+1 day' ); $interval = new DateInterval('P1D'); $daterange = new DatePeriod($begin, $interval ,$end); foreach ($daterange as $date) { $dates_ar[] = $date->format("Ymd"); } } ?>    

这包括@ charlietfl关于不使用内爆但是使用的优秀观点

 var disabledDays = ; 

代替

注意,我使用了“C”编码风格

 if() { while() { } } 

而不是你使用的替代风格

 if(): while(): endwhile; else: endif; 

此外,没有else阻止,因为无论如何都无事可做