fullcalendar 관련 문의드립니다. 채택완료

이미지 보시는 바와 같이 디비에서 데이터를 가져와 캘린더에서 뿌려주고 있습니다. 

현제 디비상에는 각 이벤트별로 요일데이터를 받아놨습니다. 

이벤트를 쭈욱 보여주는게 아니라 기간안에 해당 요일만 제목이 출력되게끔 하고자하는데,

검색등을 해봐도 없고 어떻게 해야할지 잘 모르곘습니다.;;;

도움 부탁드립니다. 감사합니다.   

Copy
<?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>
 

1888943420_1645402947.0855.png

답변 1개

채택된 답변
+20 포인트

시작일부터 종료일까지 하루씩 비교해서 해당 요일이면,

하루씩 표시를 해주면 됩니다.

Copy
<?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

                }";

        }

    }

}

?>
로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고