FullCalendar - 如何根据逗号分隔的日期从日历上的数据库(mysql)表行显示事件
Posted
技术标签:
【中文标题】FullCalendar - 如何根据逗号分隔的日期从日历上的数据库(mysql)表行显示事件【英文标题】:FullCalendar - How to show event based upon comma separated dates from database(mysql) table row on calendar 【发布时间】:2016-03-31 03:05:42 【问题描述】:我正在尝试根据数据库中表的同一行中的日期显示多个事件,以逗号分隔,如图所示:
Image from the database table
这是我从数据库中获取结果的 php/wordpress 代码:
$my_query = new WP_Query($args);
if ($my_query->have_posts())
$i = 0;
while ($my_query->have_posts()) : $my_query->the_post();
?>
<?php
$title = get_the_title();
//$date = explode(',',get_post_meta($post->ID, 'trainee_date_pick', true));
$date = get_post_meta($post->ID, 'trainee_date_pick', true);
//$dateArray = explode(',', $date);
$mealdes = nl2br(get_post_meta($post->ID, 'meal_plan_des', true));
$url = get_post_meta($post->ID, 'youtube_videos', true);
$url_two = get_post_meta($post->ID, 'youtube_videos_sec', true);
$meal_lable = get_post_meta($post->ID, 'meal_plan_label', true);
$array_cal[$i]["title"] = $title;
$array_cal[$i]["start"] = $date;
$array_cal[$i]["url"] = $url;
$array_cal[$i]["urltwo"] = $url_two;
$array_cal[$i]["description"] = $mealdes;
$array_cal[$i]["meallable"] = do_shortcode("[nutrition-label id=" . $meal_lable . "]");
$i++;
?>
<?php
endwhile;
echo json_encode($array_cal);
?>
搜索后我尝试自己做,上面的代码像这样返回 json,但日历上没有显示任何内容,但是当有单个日期时,它会显示出来。
["title":"Full Body","start":"2015-12-09, 2015-12-31","url":"","urltwo":"","description":"Deadlift 5x5
\r\nPause Squats 3x8
\r\nBench Press 3x8
\r\nClose Grip Bench 3x12
\r\nAlternating Curls 3x12
\r\nDips 3xMax
\r\nJump Rope 20 minutes
\r\n","meallable":""]
这是我读取 json 数组的 jQuery 代码:
<script type="text/javascript">
jQuery(document).ready(function ()
jQuery('#calendar').fullCalendar(
editable: true,
droppable: true,
eventLimit: true,
events: "/calendar-events/",
eventRender: function (event, element)
element.attr('href', 'javascript:void(0);');
element.click(function ()
jQuery("#startTime").html(moment(event.start).format('DD-MM-YYYY'));
jQuery("#eventInfo").html(event.description);
jQuery("#eventLink").attr('href', event.url);
jQuery("#eventLink2").attr('href', event.urltwo);
jQuery("#meal_label").html(event.meallable);
// jQuery("#labeledit").attr('href',event.editlab);
// jQuery('#eventedit').attr('href',event.eventedit);
jQuery("#eventContent").dialog(modal: true, title: event.title, width: 350);
);
);
);
</script>
我真的需要帮助,请有人提出解决方案。
【问题讨论】:
我唯一能真正看到的是,在您的 JSON 中,start
格式不正确。从我所见,您的开始似乎有两个日期,开始和结束,因此您应该拆分这些日期并将结束参数也发送到 json,看看是否有帮助。 Event Object 并查看所需的ISO8601 string
的链接。除此之外,我看不出有什么问题。
不,乔恩,他们都是开始日期,我想在多个日期显示单个事件。
当您仅通过那一项活动时,这两天在完整日历上是否正确显示?
不,这就是我要问的,当这样(2015-12-09、2015-12-31)但只有一个日期(2015-12-31)时,它不会同时显示两个日期出现在日历上。
最多可以有两个日期,还是可以有更多?
【参考方案1】:
好的,既然我了解了您的问题...只需查看每个可能有多个事件的日期列表即可。为此,取消注释您的一行,然后再添加两行。它看起来像这样:
$my_query = new WP_Query($args);
if ($my_query->have_posts())
$i = 0;
while ($my_query->have_posts()) : $my_query->the_post();
?>
<?php
$title = get_the_title();
//$date = explode(',',get_post_meta($post->ID, 'trainee_date_pick', true));
$date = get_post_meta($post->ID, 'trainee_date_pick', true);
$dateArray = explode(',', $date);
$mealdes = nl2br(get_post_meta($post->ID, 'meal_plan_des', true));
$url = get_post_meta($post->ID, 'youtube_videos', true);
$url_two = get_post_meta($post->ID, 'youtube_videos_sec', true);
$meal_lable = get_post_meta($post->ID, 'meal_plan_label', true);
foreach($dateArray as $date)
$array_cal[$i]["title"] = $title;
$array_cal[$i]["start"] = trim($date);
$array_cal[$i]["url"] = $url;
$array_cal[$i]["urltwo"] = $url_two;
$array_cal[$i]["description"] = $mealdes;
$array_cal[$i]["meallable"] = do_shortcode("[nutrition-label id=" . $meal_lable . "]");
$i++;
?>
<?php
endwhile;
echo json_encode($array_cal);
?>
【讨论】:
以上是关于FullCalendar - 如何根据逗号分隔的日期从日历上的数据库(mysql)表行显示事件的主要内容,如果未能解决你的问题,请参考以下文章
如何根据oracle plsql中列中的逗号分隔值拆分选择查询行