FullCalendar-如何根据日历上数据库(mysql)表行中逗号分隔的日期显示事件


FullCalendar - How to show event based upon comma separated dates from database(mysql) table row on calendar

我试图根据数据库中表的同一行的日期显示多个事件,用逗号分隔,如图所示:

来自数据库表的图像

这是我的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>

我真的需要帮助,请有人拿出解决方案。

好吧,现在我明白你的问题了。。。这只是浏览每个可能有多个活动的日期列表的问题。为此,取消对其中一行的注释,再添加两行。它看起来像这样:

$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);
?>