Mysql 如果没有URL,如何使用JSON编码的数组?

Mysql 如果没有URL,如何使用JSON编码的数组?,mysql,json,events,fullcalendar,Mysql,Json,Events,Fullcalendar,大家好,我使用的是fullCalendar 1.5.1,我创建了一个PHP查询,它返回了我想在日历中使用的几乎所有内容。这是一个集成系统,因此我必须切换到_ASSOC,以便只返回MySQLi关联数组: <?php global $json_result; global $myqueryresult; $GLOBALS["ADODB_FETCH_MODE"] = ADODB_FETCH_ASSOC; $myquery = "SELECT id, title, eventstart, eve

大家好,我使用的是fullCalendar 1.5.1,我创建了一个PHP查询,它返回了我想在日历中使用的几乎所有内容。这是一个集成系统,因此我必须切换到_ASSOC,以便只返回MySQLi关联数组:

<?php 
global $json_result;
global $myqueryresult;
$GLOBALS["ADODB_FETCH_MODE"] = ADODB_FETCH_ASSOC;
$myquery = "SELECT id, title, eventstart, eventend FROM View1";
$myqueryresult = $GLOBALS["conn"]->GetAll($myquery);
$json_result = json_encode($myqueryresult);
$GLOBALS["ADODB_FETCH_MODE"] = ADODB_FETCH_BOTH;
?>

…但它不会接受数据,因为键/值对中的键被引用(根据JSON标准,我已经阅读过)

如果我只输入结果MySQL数组,Javascript只会将数据显示为“数组”。如果我在数组上使用json_encode(),我会得到一个看起来合适的json对象,但由于引用了键,它不能与fullCalendar一起使用

以下是我对fullcalendar的jQuery:

$(document).ready(function() {                            
    $('#calendar').fullCalendar({          
    height: 600,
    firstDay: 6,
    theme: true,
    year: 2012,
    month: 0,                      
    date: 7,                      
    minTime: 6,
    maxTime: 23,
    startParam: 'eventstart',
    endParam: 'eventend',
    defaultView: 'agendaWeek',        
    allDaySlot: false,
    slotMinutes: 15,                      
    events: <?php echo $json_result; ?>

        // put your options and callbacks here
    })
}); 
$(文档).ready(函数(){
$(“#日历”).fullCalendar({
身高:600,
第一天:6,
主题:真的,
年份:2012年,
月份:0,
日期:2007年7月7日,
时间:6,,
最长时间:23,
StartRAM:“事件开始”,
endParam:“eventend”,
defaultView:'agendaWeek',
全天时段:错,
慢分钟:15,
活动:
//把你的选择和回电放在这里
})
}); 
如果我对$json_结果使用MySQL数组,则生成的HTML源代码如下:

    $(document).ready(function() {                            
        $('#calendar').fullCalendar({          
<...snip...>
        slotMinutes: 15,                      
        events: Array
            // put your options and callbacks here
        })
    });
$(文档).ready(函数(){
$(“#日历”).fullCalendar({
慢分钟:15,
事件:数组
//把你的选择和回电放在这里
})
});
如果我使用json_encode($thesamearray),结果如下

$(文档).ready(函数(){
事件:[{“id”:“51”,“title”:“Ship in Miami,Florida”,“eventstart”:“2012-01-07 07:00:00”,“eventend”:“2012-01-07 15:00:00”},{“id”:“547”,“title”:“Miami,Florida”,“eventstart”:“2012-01-14 07:00:00”,“eventend”:“null}]
//把你的选择和回电放在这里
})
});
如何调整它,使其在fullCalendar中作为数组工作?它似乎不想获取JSON字符串或数组,至少不想采用PHP现在使用的数组格式

谢谢, 克里斯

解决方案:

别名MySQL字段:

<?php 
global $json_result;
$GLOBALS["ADODB_FETCH_MODE"] = ADODB_FETCH_ASSOC;
$myquery = "SELECT id, title, eventstart AS start, eventend AS end FROM View1";
$myqueryresult = $GLOBALS["conn"]->GetAll($myquery);
$json_result = json_encode($myqueryresult);
$GLOBALS["ADODB_FETCH_MODE"] = ADODB_FETCH_BOTH;
?>

还调整了jQuery以删除我的开始/结束参数,并将allDaySlot更改为allDayDefault:

$(document).ready(function() {                            
    $('#calendar').fullCalendar({          
    height: 600,
    firstDay: 6,
    theme: true,
    year: 2012,
    month: 0,                      
    date: 7,                      
    minTime: 6,
    maxTime: 23,
    defaultView: 'agendaWeek',        
    allDayDefault: false,
    slotMinutes: 15,                      
    events: <?php echo $json_result; ?>

        // put your options and callbacks here
    })
});
$(文档).ready(函数(){
$(“#日历”).fullCalendar({
身高:600,
第一天:6,
主题:真的,
年份:2012年,
月份:0,
日期:2007年7月7日,
时间:6,,
最长时间:23,
defaultView:'agendaWeek',
allDayDefault:false,
慢分钟:15,
活动:
//把你的选择和回电放在这里
})
});

现在,如果我能找到一个方法,让它显示一个8天的横向议程,我的麻烦就可以结束了!感谢所有提示。

根据文档,开始日期是必需的,并且必须指定为名为
start
的属性-您使用的名称是
eventstart

注意,根据文档,和是事件的JSON提要选项的参数,并且似乎不会更改用于开始和结束时间的属性的名称


更新1

我有点反直觉地处理了这个问题,除非您将
allDaySlot:false
指定为事件的属性,即使有特定的时间范围,它也会显示在日历顶部的全天时段中,您已使用
allDaySlot:false
禁用了该时段。这里使用了几乎所有的原始设置


更新2


从您对Matt答案的评论和文档中,我看到
全天
属性的全局默认值继承自默认为
true的属性。因此,通过将选项中的
allDayDefult:false
传递到
fullCalendar()
,可以避免分别为每个事件指定
allDayDefult:false
。这是最新的。请注意,您不必去掉
allDaySlot
,它只是指示显示全天事件的插槽是否显示在顶部。

json_encode
d数组在我看来很好。对FullCalendar来说,引用对象键并不重要。你是对的,引用的键很好,谢谢。非常感谢大家,经过一点调整,我让它们都正确地显示出来了。我将用解决方案更新这个问题。还有一点很好,我添加了allDaySlot:false来摆脱它,并且仍然保留了所有功能。由于文本在事件中重叠,我仍然看到了许多需要解决的选项,但现在它真的起作用了,我确信修复起来不会那么困难。再次感谢!你看到了其他的回答,对吗?您的回答有点过于复杂了,我所需要做的就是重命名SQL查询中使用的别名。谢谢你的回复。
<?
$username = "root";
$password = "";
$hostname = "localhost"; 
$dbhandle = mysql_connect($hostname, $username, $password)
  or die("Unable to connect to MySQL");
  $selected = mysql_select_db("db_name",$dbhandle)
  or die("Could not select examples");
  $sql = 'SELECT * from schedule';
  $result = mysql_query($sql);
   $events = array();
while ($row = mysql_fetch_assoc($result)) {
    $eventsArray = array();
    $eventsArray['id'] =  $row['idschedule'];
    $eventsArray['title'] = $row['schedule_name'];
    $eventsArray['start'] = $row['date_start']. " " . $row['time_start'];
    $eventsArray['end'] = $row['date_end']. " ".$row['time_end'];

   if($all==true)
    {
        $vall = str_replace('}',',"allDay":true}',json_encode($eventsArray));
    }
    else
    {
        $vall = str_replace('}',',"allDay":false}',json_encode($eventsArray));
    }
    $events[] = trim($vall); 
}  
$val = implode($events);
$val2 = str_replace('}','},',$val);

?>
<?
$username = "root";
$password = "";
$hostname = "localhost"; 
$dbhandle = mysql_connect($hostname, $username, $password)
  or die("Unable to connect to MySQL");
  $selected = mysql_select_db("db_name",$dbhandle)
  or die("Could not select examples");
  $sql = 'SELECT * from schedule';
  $result = mysql_query($sql);
   $events = array();
while ($row = mysql_fetch_assoc($result)) {
    $eventsArray = array();
    $eventsArray['id'] =  $row['idschedule'];
    $eventsArray['title'] = $row['schedule_name'];
    $eventsArray['start'] = $row['date_start']. " " . $row['time_start'];
    $eventsArray['end'] = $row['date_end']. " ".$row['time_end'];

   if($all==true)
    {
        $vall = str_replace('}',',"allDay":true}',json_encode($eventsArray));
    }
    else
    {
        $vall = str_replace('}',',"allDay":false}',json_encode($eventsArray));
    }
    $events[] = trim($vall); 
}  
$val = implode($events);
$val2 = str_replace('}','},',$val);

?>
events: [<?=$val2?>],