2014-01-07 15 views
0

將fullCalendar.js與defaultView一起用作agendaDay,並將事件作爲JSON從mysql獲取。錯誤是它顯示'全天'部分中的事件。fullCalendar.js defaultView:'agendaDay'顯示全天節中的事件

我嘗試這樣做:

eventRender: function(event, element, view) { 
    if (event.allDay == 1) { 
    event.allDay = true; 
    } else { 
    event.allDay = false; 
    } 

我也試過:

eventRender: function(event, element, view) { 
event.allDay = false; 
}, 

而且這樣的:

eventAfterAllRender: function(event, element, view) { 
event.allDay = false; 
}, 

但我的股票,仍然沒有工作。

這裏沒有JSON工作小提琴:事件:

http://jsfiddle.net/sebababi/g5gtG/1/

要進行測試,您需要更改的事件:在對的jsfiddle:事件: 「events.php」,

這裏是events.php文件

<?php 
// List of events 
$json = array(); 

// Query that retrieves events 
$requete = "SELECT * FROM evenement ORDER BY id"; 

// connection to the database 
try { 
$bdd = new PDO('mysql:host=localhost;dbname=fullcalendar', 'root', 'root'); 
} catch(Exception $e) { 
    exit('Unable to connect to database.'); 
} 

// Execute the query 
$resultat = $bdd->query($requete) or die(print_r($bdd->errorInfo())); 

// sending the encoded result to success page 
echo json_encode($resultat->fetchAll(PDO::FETCH_ASSOC)); 

?> 

,這裏是mysql表

CREATE TABLE `evenement` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `title` varchar(255) COLLATE utf8_bin NOT NULL, 
    `start` datetime NOT NULL, 
    `end` datetime DEFAULT NULL, 
    `url` varchar(255) COLLATE utf8_bin NOT NULL, 
    `allDay` tinyint(1) NOT NULL DEFAULT '0', 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=34 ; 

INSERT INTO `evenement` (`id`, `title`, `start`, `end`, `url`, `allDay`) VALUES 
(24, 'testing defaultView with agendaDay and JSON event', '2014-01-07 08:30:00', '2014-01-07 09:30:00', '', 1); 

任何幫助讓我走在正確的軌道將不勝感激。

+0

您可以在瀏覽器控制檯中顯示您返回的JSON。 –

+0

我可以在你的jsfiddle中看到呈現的事件「not in allDay slot」,你可以編輯你的問題並在瀏覽器控制檯中發佈你的返回的JSON。 –

+0

@亨利克C.嗨恩裏克,這裏是JSON:http://eggings.com/fullcalendar-1.6.4/events.php,這裏的代碼在行動:http://eggings.com/fullcalendar-1.6.4 /default.php。因此,在第一次加載時,您會在全天區域看到該事件。如果您點擊「月」然後點擊「日」,該活動就位於正確的位置。感謝 – Sebastian

回答

0

好吧,我加入了一些代碼,你的jsfiddle顯示按鍵上一頁,下一頁:

HTML

<input type="button" value="prev" id="prevbutton" /> 
<input type="button" value="next" id="nextbutton"/> 
<div id='calendar'></div> 

JS

var calendar = $('#calendar').fullCalendar({ 
defaultView: 'agendaDay', 
header: { 
    center: 'title', 
    right: 'month,agendaWeek,agendaDay' 
}, 
editable: true, 
year: 2014, 
month: 0, 
day:7, 
buttonText: { 
    prev: '&lt;', 
    next: '&gt;' 
}, 
events: [ 
    { 
     title: 'testing defaultView with agendaDay and JSON event', 
     start: '2014-01-07 11:00', 
     allDay: false 
    } 
] 
}); 

$('#prevbutton').click(function() { 
calendar.fullCalendar('prev'); 
}); 

$('#nextbutton').click(function() { 
calendar.fullCalendar('next'); 
}); 

現在爲您JSON你必須在你的PHP中進行管理來獲得像這樣的json字符串

[{"id":"24","title":"testing with defaultView: agendaDay, not showing in Day","start":"2014-01-09 08:30:00","end":"2014-01-09 09:30:00","url":"","allDay":false}] 

使用

var_dump(json_decode($json)); 

,看看你的字符串是正確的,從數據庫中你的PHP沒有客戶端,你必須轉換值0和1的阿迪。

編輯

繼波紋管談話...

你誤會我的意思塞巴斯蒂安這是你拿的PDO :: FETCH_ASSOC內容在PHP和轉換變成一隻普通的PHP關聯數組並且在構建正常的PHP數組時,您可以在這種轉換的情況下改變allDay的值。

基於該鏈接,您可以訪問實際上是關聯數組的返回行,就像我們從PHP中知道的那樣,並將allDay值從0更改爲false。

只有這樣你才能使用json_encode()並將其發送回fullcalendar。

+0

謝謝Henrique,我改變了events.php這最後一行:echo json_encode($ resultat-> fetchAll(PDO :: FETCH_ASSOC));爲你的 var_dump(json_decode($ resultat-> fetchAll(PDO :: FETCH_ASSOC)));但給我一個警告:json_decode()期望參數1是字符串,數組在第21行/var/www/clients/client2/web24/web/fullcalendar-1.6.4/events.phpNULL – Sebastian

+0

這裏這將幫助;)[如何看到內部PDO :: FETCH_ASSOC](http://stackoverflow.com/questions/16846531/how-to-read-fetchpdofetch-assoc),然後嘗試通過創建一個PHP數組,然後使用此PHP數組到您的var_dump(json_decode($ newPHPArray)); –

+0

感謝Henrique,我用print_r(json_encode($ resultat-> fetchAll(PDO :: FETCH_ASSOC))); (如建議,並嘗試其他建議),但仍然JSON來allDay:0,而不是allDay:false。但我不認爲問題在那裏。我也試圖「破解」結果,只是通過:allDay = false;並仍然在allDay地區首次亮相。 – Sebastian

相關問題