首页 > 解决方案 > 从 Mysql 中选择日期以使用引导程序 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.'};
                }
            }
});

标签: javascriptphpjquerydatepicker

解决方案


渲染时,这一行:

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

变成

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

它被包裹在一个字符串中,因此检查$.inArray(calender_date, user_busy_days);是检查字符串中的字符而不是数组中的字符串。

去掉'souser_busy_days就变成了一个数组:

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

额外的:

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


推荐阅读