fullcalendar 관련 문의드립니다.
본문
이미지 보시는 바와 같이 디비에서 데이터를 가져와 캘린더에서 뿌려주고 있습니다.
현제 디비상에는 각 이벤트별로 요일데이터를 받아놨습니다.
이벤트를 쭈욱 보여주는게 아니라 기간안에 해당 요일만 제목이 출력되게끔 하고자하는데,
검색등을 해봐도 없고 어떻게 해야할지 잘 모르곘습니다.;;;
도움 부탁드립니다. 감사합니다.
<?php
$sel_mon = sprintf("%02d",$month);
// $query = "SELECT * FROM lms_class WHERE left(start_date,7) <= '".$year."-".$sel_mon."' and left(end_date,7) >= '".$year."-".$sel_mon."' ORDER BY idx ASC";
$query = "SELECT * FROM lms_class ORDER BY idx ASC";
$result = sql_query($query);
$aryData = array();
while($row = sql_fetch_array($result))
{
$aryData[] = "{
title:'".$row["title"]."',
start:'".date("Y-m-d", strtotime($row["start_date"]))."',
end:'".date("Y-m-d", strtotime($row["end_date"]))."',
url:'".G5_BBS_URL."/board.php?bo_table={$bo_table}&year={$year}&month={$month}&wr_id={$row["wr_id"]}&sc_no={$sc_no}',
allDay: false
}";
}
?>
<script>
$(document).ready(function () {
var calendar = $('#calendar').fullCalendar({
editable: true,
// events: 'read_class.php',
defaultDate: '<?= $year."-".$month?>',
events: [
<?= implode(",", $aryData) ?>
],
header:{
left:'prev,next today',
center:'title',
right:'month,agendaWeek,agendaDay'
},
dayHeaderContent: function (date) {
let weekList = ["일", "월", "화", "수", "목", "금", "토"];
return weekList[date.dow];
},
selectable:true,
selectHelper:true,
select: function(start, end, allDay)
{
var title = prompt("Enter Event Title");
if(title)
{
var start = $.fullCalendar.formatDate(start, "Y-MM-DD HH:mm:ss");
var end = $.fullCalendar.formatDate(end, "Y-MM-DD HH:mm:ss");
$.ajax({
url:"insert.php",
type:"POST",
data:{title:title, start:start, end:end},
success:function()
{
calendar.fullCalendar('refetchEvents');
alert("Added Successfully");
}
})
}
},
editable: true,
eventDrop: function (event, delta) {
var start = $.fullCalendar.formatDate(event.start, "Y-MM-DD HH:mm:ss");
var end = $.fullCalendar.formatDate(event.end, "Y-MM-DD HH:mm:ss");
$.ajax({
url: 'edit-event.php',
data: 'title=' + event.title + '&start=' + start + '&end=' + end + '&id=' + event.id,
type: "POST",
success: function (response) {
displayMessage("Updated Successfully");
}
});
},
eventClick: function (event) {
var deleteMsg = confirm("Do you really want to delete?");
if (deleteMsg) {
$.ajax({
type: "POST",
url: "delete-event.php",
data: "&id=" + event.id,
success: function (response) {
if(parseInt(response) > 0) {
$('#calendar').fullCalendar('removeEvents', event.id);
displayMessage("Deleted Successfully");
}
}
});
}
}
});
});
function displayMessage(message) {
$(".response").html("<div class='success'>"+message+"</div>");
setInterval(function() { $(".success").fadeOut(); }, 1000);
}
</script>
!-->
답변 1
시작일부터 종료일까지 하루씩 비교해서 해당 요일이면,
하루씩 표시를 해주면 됩니다.
<?php
$sel_mon = sprintf("%02d",$month);
// $query = "SELECT * FROM lms_class WHERE left(start_date,7) <= '".$year."-".$sel_mon."' and left(end_date,7) >= '".$year."-".$sel_mon."' ORDER BY idx ASC";
$query = "SELECT * FROM lms_class ORDER BY idx ASC";
$result = sql_query($query);
$aryData = array();
while($row = sql_fetch_array($result))
{
for($i=strtotime($row["start_date"]); $i<=strtotime($row["end_date"]); $i+=86400) {
if(date('w',$i) == "해당요일") {
$aryData[] = "{
title:'".$row["title"]."',
start:'".date("Y-m-d", $i)."',
end:'".date("Y-m-d", $i)."',
url:'".G5_BBS_URL."/board.php?bo_table={$bo_table}&year={$year}&month={$month}&wr_id={$row["wr_id"]}&sc_no={$sc_no}',
allDay: false
}";
}
}
}
?>
답변을 작성하시기 전에 로그인 해주세요.