【问题标题】:Updating datepicker based on days available based on database values根据基于数据库值的可用天数更新日期选择器
【发布时间】:2018-03-26 15:42:02
【问题描述】:

我目前正在尝试根据取自 mysql 数据库并存储在 php 数组中的值禁用 jquery datepicker 上的某些日期。我无法将 php 数组转换为 jquery,然后读取值以禁用尚未选择供用户使用的日期。谁能指导我完成创建此功能所需要做的事情。将php数组编码为json后,我在过程中有点迷失

 $daysavailquery = "SELECT Monday, Tuesday, Wednesday, Thursday, Friday, 
 Saturday, Sunday FROM miiLearning_tutorAvail WHERE id = 
 $id";

$daysavailresult = mysqli_query($conn, $daysavailquery);

$daysavailarray = mysqli_fetch_array($daysavailresult);

//Convert days avail to json
$DaysAvailJSON = json_encode($daysavailarray);
echo $DaysAvailJSON;

<script>
        $( function() {


            $( "#datepicker" ).datepicker({
                dateFormat: "yy-mm-dd"
                var daysAvailArray = <?php echo json_encode($daysavailarray) ?>
                beforeShowDay: function(date) {

                var day = date.getDay();
                console.log(day);

                if (day == 0 && daysAvailArray[0]==1)
                  return [true];
                if (day == 1 && daysAvailArray[0]==1)
                  return [true];
                if (day == 2 && daysAvailArray[0]==1)
                  return [true];
                if (day == 3 && daysAvailArray[0]==1)
                  return [true];
                if (day == 4 && daysAvailArray[0]==1)
                  return [true];
                if (day == 5 && daysAvailArray[0]==1)
                  return [true];
                if (day == 6 && daysAvailArray[0]==1)
                  return [true];

                return [false];
              }
            });
        } );
    </script>

<div class="form-group">
     <label for="datepicker">Pick a date</label>
     <input type="text" date-date- format="yy-mm-dd" name="datepicker" 
id="datepicker" class="form-control" required>
</div>

【问题讨论】:

  • 代码在哪里?您使用的是哪个日期选择器?我们需要更好地解释您的问题
  • 抱歉,现在将发布代码

标签: php jquery html arrays


【解决方案1】:

我将假设该表包含每天的真值或假值。

$daysavailarray = mysqli_fetch_array($daysavailresult);
// should be have associate array
//[ 'monday' => '1', 'Sunday' => '0']
// we don't need the day name so we will use MYSQLI_NUM to have it as numerical index [ 0 => '1' , 1 => '0' ]
$daysavailarray = mysqli_fetch_array($daysavailresult, MYSQLI_NUM);

现在想将 php 数组转换为 javascript 数组 json_encode 就可以了

var daysAvailArray = &lt;?php echo json_encode($daysavailarray) ?&gt;;

因为我们有日期作为索引,所以更容易看出它是否为假

var day = date.getDay();
console.log(day);
return daysAvailArray[day-1] ? [true] : [false];

完整的javascript代码

<script>
    $( function() {
        var daysAvailArray = <?php echo json_encode($daysavailarray) ?>;
        $( "#datepicker" ).datepicker({
            dateFormat: "yy-mm-dd",
            beforeShowDay: function(date) {
                var day = date.getDay();
                return (daysAvailArray[day-1] == '1') ? [true] : [false];                           
            }
        });
    } );
</script>

【讨论】:

  • 所以要使用这个我改变 $daysavailarray = mysqli_fetch_array($daysavailresult);为$daysavailarray = mysqli_fetch_array($daysavailresult, MYSQLI_NUM);,然后对其进行编码并将js中的变量设置为var daysAvailArray = ;?
  • 是并删除所有 if 语句并将 return 替换为 return daysAvailArray[day-1] ? [真] : [假];
  • var daysAvailArray = ["0","0","0","0","0","0","1"];目前我在这一行弹出一个意外的语法错误..不确定发生了什么
  • 语法似乎是文件检查页面并发布整个 javascript。
猜你喜欢
  • 2021-03-28
  • 1970-01-01
  • 2015-08-21
  • 2023-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-19
  • 2017-05-01
相关资源
最近更新 更多