如何通过PHP读取数据库日期并设置multiDatesPicker选中状态
如何用PHP给multiDatesPicker设置从数据库获取的选中日期
我来帮你搞定这个问题,其实步骤很清晰,咱们一步步来实现:
核心思路
数据库里的日期是dd-mm-yyyy格式的逗号分隔字符串,而multiDatesPicker需要接收可识别的日期数组(支持特定格式的字符串或Date对象)。我们需要把数据库的字符串转成插件能识别的格式,再传给JavaScript初始化插件。
方法一:直接用数据库日期格式(无需转换)
如果想保留数据库的dd-mm-yyyy格式,只需要告诉插件你的日期格式即可:
1. PHP端处理数据
先从数据库取出日期字符串,分割成数组后转成JSON格式:
// 假设从数据库查询得到的日期字符串 $db_dates = "02-05-2018, 15-05-2018, 27-05-2018"; // 分割字符串为单个日期数组,同时去除每个元素的空格 $date_list = array_map('trim', explode(',', $db_dates)); // 转成JSON格式,方便JS读取 $json_dates = json_encode($date_list);
2. JavaScript初始化插件
在初始化时指定dateFormat为dd-mm-yy,并传入处理好的日期数组:
<div id="myCalendar"></div> <script> $(document).ready(function() { // 从PHP获取处理好的日期数组 var preSelectedDates = <?php echo $json_dates; ?>; // 初始化multiDatesPicker,设置日期格式并传入选中日期 $("#myCalendar").multiDatesPicker({ dateFormat: "dd-mm-yy", selectedDates: preSelectedDates }); }); </script>
方法二:转换为插件默认格式
如果不想修改插件的日期格式(默认是mm/dd/yy),可以在PHP端先转换日期格式:
1. PHP端处理数据
把dd-mm-yyyy转成mm/dd/yyyy格式:
$db_dates = "02-05-2018, 15-05-2018, 27-05-2018"; $date_list = array_map('trim', explode(',', $db_dates)); $formatted_dates = []; foreach ($date_list as $date) { // 拆分日、月、年,重新组合格式 list($day, $month, $year) = explode('-', $date); $formatted_dates[] = "$month/$day/$year"; } $json_dates = json_encode($formatted_dates);
2. JavaScript初始化插件
直接使用默认格式,传入转换后的日期数组:
<div id="myCalendar"></div> <script> $(document).ready(function() { var preSelectedDates = <?php echo $json_dates; ?>; // 初始化插件,直接传入选中日期(默认格式无需额外设置) $("#myCalendar").multiDatesPicker({ selectedDates: preSelectedDates }); // 或者初始化后再添加日期,效果一样: // $("#myCalendar").multiDatesPicker('addDates', preSelectedDates); }); </script>
注意事项
- 确保jQuery和multiDatesPicker的脚本已经正确引入到页面中
- 如果日期格式不匹配,插件会无法识别选中日期,一定要保证
dateFormat参数和传入的日期格式一致 - 处理数据库数据时,记得去除每个日期前后的空格(用
trim),避免格式错误
内容的提问来源于stack exchange,提问作者Hardik Patil
相关产品推荐
相关产品推荐

