我正在尝试将fullcalendar集成到我的php应用程序中。
但是,我在将数据保存到数据库时遇到问题,数据库不接受标题和网址,除非它们是双引号。
开始和结束日期仍为NULL。因此,当我刷新数据时,会使用开始和结束时间元素的空值将数据添加到数据库中。这引起了关注,因为当我刷新页面时,所有事件都从日历中消失,而实际上它们仍然在数据库中。
当我调整新插入事件的空变量的值时,所有事件都会再次出现。
这是default.html中的ajax调用。
selectable: true,
selectHelper: true,
select: function(start, end, allDay) {
var title = prompt('Event Title:');
var url = prompt('Type Event url, if exits:');
if (title) {
var start = $.fullCalendar.moment(start);
var end = $.fullCalendar.moment(end);
console.log("Event Triggered");
$.ajax({
url: 'add_events.php',
data: 'title='+ encodeURIComponent(title)+
'&start='+ encodeURIComponent(start)+
'&end='+ encodeURIComponent(end)+
'&url='+ encodeURIComponent(url),
type: "POST",
dataType: 'text',
success: function(json) {
alert('Added Successfully');
},
error: function(xhr, textStatus, errorThrown) {
alert(xhr.responseText);
}
});
calendar.fullCalendar('renderEvent',
{
title: title,
start: start,
end: end,
url:url,
allDay: allDay
},
true // make the event "stick"
);
}
calendar.fullCalendar('unselect');
}
这是add_events.php(请注意,除了没有收到帖子之外没有错误。)
<?php
// Values received via ajax
$data = $_POST;
$json_array["title"]=json_decode($data["title"], true);
$json_array["start"]=json_decode($data["start"], true);
$json_array["end"]=json_decode($data["end"], true);
$json_array["url"]=json_decode($data["url"], true);
$title =$json_array["title"];
$start =$json_array["start"];
$end = $json_array["end"];
$url = $json_array["url"];
// connection to the database
try {
$bdd = new PDO('mysql:host=localhost;dbname=fullcalendar', '....', '.......');
} catch(Exception $e) {
exit('Unable to connect to database.');
}
$sql = 'INSERT INTO `evenement` ( `title`,`start`,`end`,`url`) VALUES( ?, ?, ?, ? )';
$stmt = $pdo->prepare($sql);
$stmt->execute(array($title, $start, $end, $url ));
// check for errors
if($stmt->errorCode() == 0) {
$id = $pdo->lastInsertId();
}
else {
// had errors
$errors = $stmt->errorInfo();
print_r($errors);
}
?>
如何实现这一目标将不胜感激。
主文件的标头(default.html)如下所示:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<link href='css/fullcalendar.css' rel='stylesheet' />
<link href='css/fullcalendar.print.css' rel='stylesheet' media='print' />
<script src='js/moment.min.js'></script>
<!--<script src='js/jquery.min.js'></script>-->
<script src='js/fullcalendar.min.js'></script>
但POST不适用于日期: - 我这样说是因为我改变了所有字段以允许NULL但是它允许NULL并在数据库中创建NULL,NULL,NULL,NULL条目。
答案 0 :(得分:0)
现在你正在这样做:
data: 'title='+ title+'&start='+ start +'&end='+ end +'&url='+ url ,
`
这不是在POST
上发送参数的正确方法。这看起来更像您在GET
上所期望的参数附加到网址的内容。而是创建一个对象并将其传递给数据字段:
var obj = {
title: title,
start: start,
end: end,
url: url
}
然后:
data: obj
答案 1 :(得分:0)
有很多事情可能会出错,所以我们先来了解基础知识。
第1步: - 检查$_POST
变量是否正在接收预期数据。如果日期未达到php
,那么您就知道必须摆弄前端js
。
echo "<pre>";
print_r($_POST);
echo "</pre>";
die();
第2步: - 如果日期反映在$_POST
数组中,可能日期格式不匹配,特别是如果数据库中日期列的数据类型设置为{ {1}}因为它希望日期为DATETIME
格式。
"Y-m-d H:i:s"
注意: - 这只是算法代码,并没有准备就绪,因为需要进行大量检查以确保不会抛出任何警告/错误。例如。在将日期字符串传递给 $start =date("Y-m-d H:i:s", strtotime($json_array["start"]));
$end =date("Y-m-d H:i:s", strtotime($json_array["end"]));
函数之前检查日期字符串是否为空。
第3步: - 也许尝试strtotime()
正在执行的mysql查询。等