我正在使用完整的日历,我有一些事件是全天活动。通常,我的php设置所有'allDay' => 'false'
。现在我注意到如果我没有指定时间,它会增加时间。
我想为所有值设置所有默认值false,除非我将它们指定为true。
我的php fetch如下:
$sql = "SELECT `id`, `title`, `time`, `start`, `end`, `url`, `backgroundColor`, `textColor`, `className`,
`allDay` FROM calender WHERE length('column') > '0'";
$result = $dbh->query($sql)->fetchAll(PDO::FETCH_ASSOC);
foreach ($result as $row){
$return[]=array('id'=>$row['id'],
'title'=>$row['title'],
"allDay" =>$row['allDay'],
'start'=>$row['start'].' '.$row['time'],
'end'=>$row['end'],
'url'=>$row['url'],
'backgroundColor'=>$row['backgroundColor'],
'textColor'=>$row['textColor'],
'className' =>$row['className']);
}
$dbh = null;
header('Content-type: application/json');
echo json_encode($return);
和jQuery函数是:
$(document).ready(function() {
$('#calendar').fullCalendar({
editable: false,
events: "json-events.php",
eventDrop: function(event, delta) {
alert(event.title + ' was moved ' + delta + ' days\n' +
'(You cannot update these fields!)');
},
loading: function(bool) {
if (bool) $('#loading').show();
else $('#loading').hide();
},
});
});
我不知道我在哪里添加值。我有mySQL存储'allDay'为true / false但它返回为字符串。所以我真的知道如何在json编码文件之前去掉它。或者在查看数据后让jQuery / javascript更改它。
答案 0 :(得分:2)
MySQL中的allDay字段是什么类型的?如果它是enum('true', 'false')
,那可能是你的问题。这会转换为字符串。我有人这样做,我花了很长时间才弄清楚为什么我认为布尔(或int)是一个字符串。
仔细检查您的数据库并尝试将其设为tinyint(1)
并使用0表示false,使用1表示true。 PHP的布尔值true和false将被转换为相应的整数,并且在JavaScript中使用0/1时不会有问题。
答案 1 :(得分:0)
试试这个:
foreach ($result as $row){
$return[]=array('id'=>$row['id'],
'title'=>$row['title'],
"allDay" =>$row['allDay'] == "true",
'start'=>$row['start'].' '.$row['time'],
'end'=>$row['end'],
'url'=>$row['url'],
'backgroundColor'=>$row['backgroundColor'],
'textColor'=>$row['textColor'],
'className' =>$row['className']);
}
$dbh = null;
答案 2 :(得分:0)
你也可以试试这个:
$sql = "SELECT `id`, `title`, `time`, `start`, `end`, `url`, `backgroundColor`, `textColor`, `className`, IF(`allDay` = 'true',true,false) AS allDay FROM calender WHERE length('column') > '0'";