Php 使用无日期的完整日历
现在,我正在为课程安排做一个时间表。我的想法是只将视图设置为Php 使用无日期的完整日历,php,jquery,mysql,ajax,Php,Jquery,Mysql,Ajax,现在,我正在为课程安排做一个时间表。我的想法是只将视图设置为agendaWeek,并格式化其他内容。如何获取和添加事件的编程方面是我不知道的,因为我不会在这个实例中使用任何日期 这是日程安排表: | schedid | subjectcode | prof_id | day | start_time | end_time | duration | room | ---------------------------------------------------------------
agendaWeek
,并格式化其他内容。如何获取和添加事件的编程方面是我不知道的,因为我不会在这个实例中使用任何日期
这是日程安排表:
| schedid | subjectcode | prof_id | day | start_time | end_time | duration | room |
-------------------------------------------------------------------------------------------
| 1 | TECHNO | 16-00001 | Monday | 11:00:00 | 14:00:00 | 3 | SL |
| 2 | TECHNO | 16-00001 | Tuesday | 10:30:00 | 13:30:00 | 3 | SL |
if(isset($_POST['getEvents'])) {
$result = $db->query("SELECT * FROM `calendar`");
$return = array();
while($row = $result->fetch_assoc()) {
$return[] = $row;
}
echo json_encode($return);
}
这就是我想要实现的目标:
我已经阅读了文档,读得越多,我就越不知道该做什么,我真的不知道如何实现它,因为FullCalendar取决于日期。任何建议和帮助都将不胜感激
编辑:
Date.prototype.getDaysOfCurrentWeek = function(start)
{
// Array of all days of week
var days = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
// Calculates date of first day of current week
start = start || 0;
var today = new Date(this.setHours(0, 0, 0, 0));
var day = today.getDay() - start;
var date = today.getDate() - day;
// Then we are calculating all dates of current week and then reformat them into ISOO
var daysOfWeek = new Object();
for(i = 0; i < 8; i++) {
tmp = new Date(today.setDate(date+i));
daysOfWeek[days[i]] = tmp.getFullYear()+'-'+(tmp.getMonth()+1)+'-'+tmp.getDate();
}
return daysOfWeek;
}
var days = new Date().getDaysOfCurrentWeek(); // gets array like ('nameOfDay' => 0000-00-00)
$(document).ready(function(){
$('#calendar').fullCalendar({
header: false,
columnFormat: 'dddd',
allDaySlot: false,
hiddenDays: [0],
defaultView: 'agendaWeek',
minTime: '07:00:00',
maxTime: '21:00:00',
editatble: true,
});
$.post( "getevents2.php",
{'getEvents': 1},
function(data) {
var array = JSON.parse(data);
for(i = 0; i < array.length; i++) {
$('#calendar').fullCalendar( 'renderEvent', {
title: 'Sometitle',
start: days[array[i]['day']]+'T'+array[i]['start_time'], // here we are setting needed date from array 'days' by day's name which we got from database
end: days[array[i]['day']]+'T'+array[i]['end_time'] // here's the same
} );
}
}
);
});
if(isset($_POST['getEvents'])) {
$result = $db->query("SELECT * FROM `calendar`");
$return = array();
while($row = $result->fetch_assoc()) {
$return[] = $row;
}
echo json_encode($return);
}
以下是我的完整日历脚本:
$(document).ready(function() {
$("#add-sched").fullCalendar({
header: false,
columnFormat: 'dddd',
allDaySlot: false,
hiddenDays: [0],
defaultView: 'agendaWeek',
minTime: '07:00:00',
maxTime: '21:00:00',
editatble: true,
events: [ // values will be coming from an ajax call so I'm just placing here what inputs I would like
{
title: 'Event',
start: 'MondayT11:00:00', //what I would like to input
end: 'MondayT11:00:00',
// start: '2016-12-12T11:00:00',
// end: '2016-12-12T14:00:00',
editable: true
}
]
});
});
此表是HTML文档还是Excel文档 最后我做了这个 以下是页面的HTML和JS代码:
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8' />
<link href='/something/fullcalendar.min.css' rel='stylesheet' />
<link href='/something/fullcalendar.print.min.css' rel='stylesheet' media='print' />
<script src='/something/lib/moment.min.js'></script>
<script src='/something/lib/jquery.min.js'></script>
<script src='/something/fullcalendar.min.js'></script>
<script>
Date.prototype.getWeek = function(start)
{
//Calcing the starting point
start = start || 0;
var today = new Date(this.setHours(0, 0, 0, 0));
var day = today.getDay() - start;
var date = today.getDate() - day;
// Grabbing Start/End Dates
var StartDate = new Date(today.setDate(date));
var EndDate = new Date(today.setDate(date + 6));
return [StartDate, EndDate];
}
// test code
var Dates = new Date().getWeek();
for(i = 0; i < Dates.length; i++) {
day = Dates[i].getDate();
month = (Dates[i].getMonth()) + 1;
year = Dates[i].getFullYear();
Dates[i] = year + '-' + month + '-' + day;
}
$(document).ready(function() {
$('#calendar').fullCalendar({
header: false,
columnFormat: 'dddd',
allDaySlot: false,
hiddenDays: [0],
defaultView: 'agendaWeek',
minTime: '07:00:00',
maxTime: '21:00:00',
editatble: true,
});
$.post( "getevents.php",
{'getEvents': 1, 'startDate': Dates[0], 'endDate': Dates[1]},
function(data) {
var array = JSON.parse(data);
for(i = 0; i < array.length; i ++) {
$('#calendar').fullCalendar( 'renderEvent', {
title: 'Sometitle',
start: array[i]['date']+'T'+array[i]['start_time'], //what I would like to input
end: array[i]['date']+'T'+array[i]['end_time'],
} );
}
}
);
});
</script>
<style>
body {
margin: 40px 10px;
padding: 0;
font-family: "Lucida Grande",Helvetica,Arial,Verdana,sans-serif;
font-size: 14px;
}
#calendar {
max-width: 900px;
margin: 0 auto;
}
</style>
</head>
<body>
<div id='calendar'></div>
</body>
</html>
Date.prototype.getWeek=函数(开始)
{
//煅烧起点
开始=开始| | 0;
var today=新日期(这个.setHours(0,0,0,0));
var day=today.getDay()-start;
var date=today.getDate()-day;
//抓取开始/结束日期
var StartDate=新日期(今天.设置日期(日期));
var EndDate=新日期(今天.setDate(日期+6));
返回[开始日期,结束日期];
}
//测试代码
变量日期=新日期().getWeek();
对于(i=0;i
下面是getevents.PHP的PHP代码:
<?php
$db = new mysqli('localhost', 'root', '', 'calendar'); // connection to db
function formWeekDates($startDate, $endDate) {
$startDay = getDay($startDate);
$endDay = getDay($endDate);
$tmp = explode('-', $startDate);
$return = array();
for($i = intval($startDay); $i <= intval($endDay); $i++) {
if($i > 0 && $i < 10) {
$i = '0'.$i;
}
$return[] = '\''.$tmp[0].'-'.$tmp[1].'-'.$i.'\'';
}
return $return;
}
function getDay($date) { //$date in format 'yyyy-mm-dd'
return end(explode('-', $date));
}
if(isset($_POST['getEvents']) && isset($_POST['startDate']) && isset($_POST['endDate'])) {
$startDate = $_POST['startDate'];
$endDate = $_POST['endDate'];
$dates = implode(',', formWeekDates($startDate, $endDate));
$result = $db->query("SELECT * FROM `calendar` WHERE `date` IN ($dates)");
$return = array();
while($row = $result->fetch_assoc()) {
$return[] = $row;
}
echo json_encode($return);
// echo json_encode($dates);
}
?>
此外,我还在数据库中添加了“日期”列,其中以“yyyy-mm-dd”格式存储了日期
顺便说一句,这个代码可能有点迟钝,但它是有效的
另外,我看到您希望创建此日历而不使用任何日期。但我没有找到任何办法。您可以对用户隐藏日期,并在PHP代码中对其进行处理如果我理解您的目标,您需要一周的静态日历。事件不会因日期而改变,只会因日期的名称而改变 所以我重写了以前的解决方案。在这种变体中,形成了关联数组,其中包含当前星期的日期,键是日期的名称。日期可以通过日期的名称访问,所以您不需要在数据库中存储日期 请看一下这个 HTML页面(非重要代码):
if(isset($_POST['getEvents'])) {
$result = $db->query("SELECT * FROM `calendar`");
$return = array();
while($row = $result->fetch_assoc()) {
$return[] = $row;
}
echo json_encode($return);
}
这就是你需要的吗?还是我又弄错了?请分享一些代码:)我希望它是一个HTML文档,因为我希望用户编辑日程安排。好的。20分钟后我举个例子,谢谢。将等待:-)将AJAX查询代码添加到db中,并在日历中插入事件。代码工作正常,但当开始日期和结束日期在不同月份时,它会中断。您能建议可能出现的问题吗???