从MySQL选择日期以使用引导日期选择器

时间:2019-12-05 08:53:13

标签: javascript php jquery datepicker

我正在尝试从mysql中突出显示datepicker中的所有日期,但无法正常工作,我认为问题出在数组上或我不知道;不知道,问题是当我在user_busy_days变量中写入['2019-12-01 ','2019-12-02'];正在工作,但下面的代码不工作。任何帮助表示赞赏。

PHP:

<?php
    $sql = mysqli_query($con,"SELECT dates FROM mls_cereri GROUP BY dates");
      $Data= Array();
    while ($row = mysqli_fetch_array($sql, MYSQLI_ASSOC)) 
    {
         $Data[] = $row['dates'];
    }
        $event =   json_encode($Data);
      ?>

Javascript:

var user_busy_days =  '<?php echo $event; ?>'; // <- Working example:  ['2019-12-01','2019-12-02']

 $('#to_date').datepicker({
    inline: true,
    sideBySide: true,
    format: "yy-mm-dd",
    orientation: "bottom auto",
    todayHighlight: true,
    autoclose: true,

    beforeShowDay: function (date) {
                calender_date = date.getFullYear()+'-'+(date.getMonth()+1)+'-'+('0'+date.getDate()).slice(-2);
                var search_index = $.inArray(calender_date, user_busy_days);
                if (search_index > -1) {
                    return {classes: 'non-highlighted-cal-dates', tooltip: 'User available on this day.'};
                }else{
                    return {classes: 'highlighted-cal-dates', tooltip: 'User not available on this day.'};
                }
            }
});

1 个答案:

答案 0 :(得分:1)

渲染后,此行:

 var user_busy_days = '<?php echo $event; ?>'; 

成为

var user_busy_days = '["2019-12-01", "2019-12-02"]';

,它包装在字符串中,因此检查$.inArray(calender_date, user_busy_days);是针对字符串中的字符而不是数组中的字符串进行检查。

删除',使user_busy_days成为数组:

 var user_busy_days = <?php echo $event; ?>; 

额外:

假设php日期输出为2020-01-01(示例仅显示2位数的月份),则代码(date.getMonth()+1)在1-9个月内也将需要使用0 + slice技巧