PHP日历调度程序显示事件

时间:2017-02-06 15:07:34

标签: php html events calendar

我们目前正在为我们的网络控制面板添加事件调度程序,以允许公司用户发布他们的工作事件并跟踪报告等。

一点背景

包含事件的数据库的结构包括以下内容:

cid, ceventpostedby, ceventstart, ceventend, ceventday, ceventmonth, ceventyear,
ceventtitle, ceventdesc, cuserdomain, ceventlocation, clastupdated

典型条目如下所示:

1, 1, 8:30, 13:30, 30, 1, 2017, Some Event, Event Desc, example.com, Some City, 142000000

这些事件被加载到日历中,该日历仅允许同一域组(和根管理员)中的用户可以看到,以使它们与系统中的不同Web组分开。这由cuserdomain字段定义。典型的日历将如下图所示:

Event Scheduler - Main Page

当用户点击一天时,他们会被带到一个页面,该页面将显示当前的每日活动(如果有)或显示空白时间表(7AM - 7PM)(选择时间为用户工作办公时间和事件不应该不能在这些时间之后或之前预订。当页面为空且未预订任何事件时,页面如下所示:

Event Scheduler - Selected Day

现在有些PHP ..

因此,事件页面正在检查当天是否存在事件并设置是或否。如果它确实有事件,它应该将它们打印到正确的时间框中。如果没有,只显示设置7 AM-7PM(或12小时)之间的所有时间段。我们使用以下代码

for($i = 0; $i < 12; $i++) {
    if($starting_time == 12) {
        // default is AM, change to pm after noon
        $time_type = "PM";
    }
    if($starting_time > 12) {
        // reset the time to 1 instead of 13 for user ease
        $starting_time = "1";
    }
    if(mysqli_num_rows($schedule_events_query) > 0) {
        while($event_result = mysqli_fetch_array($schedule_events_query)) {
            $time_start = $event_result['ceventstart'];
            $time_end = $event_result['ceventend'];
            $time_start = explode(":", $time_start);
            $time_end = explode(":", $time_end);
            // CODE SHOULD GO HERE TO DISPLAY THIS EVENT
        }
    } else {
        // Using custom template engine we call the empty blocks 12 times
        // since there was no event scheduled for today.
        echo $x10->template->extract("calendar_empty_schedule", $starting_time, $time_type);
    }
    $starting_time++;
}

最后问题/问题

如果在当天或甚至多个活动中预订了某个活动,我该如何打印这些活动,以便他们在开始和停止时填写块?到目前为止,只需打印一个块,每个事件只打印一个块,而不显示剩余的时间。我也不知道如何将每个事件的具体块显示为不同,然后显示其余部分。我敢肯定这不是一件难以制作的东西,但我似乎无法将其包裹起来,因为我已经在这个小组上花了这么多时间,我已经觉得麻木了(哈哈)。欢迎任何建议,并帮助感谢。我努力使这篇文章包含尽可能多的数据。这是一个日期块的html片段,仅供参考

            <div class="schedule_item_row">
                <div class="time">
                    <div class="time_smaller">
                        <div class="time_smaller_item">
                            <div style="padding-top: 13px;">00</div>
                        </div>
                        <div class="time_smaller_item">
                            <div style="padding-top: 13px;">30</div>
                        </div>
                    </div>
                    <div style="padding-top: 32px;">8 AM</div>
                </div>
                <div class="schedule_info">
                    <div class="schedule_block">
                        <div style="padding: 13px;">
                        </div>
                    </div>
                    <div class="schedule_block">
                        <div style="padding: 13px;">
                        </div>
                    </div>
                </div>
                <div class="clear"></div>
            </div>

1 个答案:

答案 0 :(得分:1)

我做了大量有关活动和日期的作品,我可以告诉你这不是一项简单的任务。我强烈建议使用Javascript插件来管理您的日历,我使用fullCalendar
FullCalendar是一个简单,完整的Javascript插件,可以做任何你想做的事情。我以为你也熟悉Jquery。如果没有,这里有一些入门教程。它将真正提高您的应用程序的质量 Gatting Started with fullCalendar
Jquery tutorial on W3C

希望这有帮助!

  • 尼克