PHP FullCalendar MSSQL 연동

3년 전 조회 3,103

 

안녕하세요.

제가 PHP 언어로 일정예약 하는 웹 페이지를 만들어보고 있습니다.

구글, 네이버를 다 뒤져봐도 FullCalendar 라이브러리를 이용해서 MySql 과는 연동을 시키는데 MSSQL 과는 연동시키는 코드가 없더라구요..

 

우선, 구글링을 통해 아래 링크 속 코드를 이용해서 코딩 중입니다.

https://phppot.com/php/php-calendar-event-management-using-fullcalendar-javascript-library/

 

일단 MySql로 연동시킨 소스코드를 제가 나름 MsSql로 바꿔봤는데 잘 동작하지 않습니다.

 

Mssql에서 사용하고자 하는 테이블(tblCalendar) 구조입니다.

1935365004_1646706542.4003.jpg

 

 

이제 코드를 첨부하겠습니다.

 

메인화면이라 할 수 있는 index.php입니다.

Copy
<!DOCTYPE html>

<html>

<link rel="shortcut icon" href="#">

 

<head>

<link rel="stylesheet" href="fullcalendar/fullcalendar.min.css" />

<script src="fullcalendar/lib/jquery.min.js"></script>

<script src="fullcalendar/lib/moment.min.js"></script>

<script src="fullcalendar/fullcalendar.min.js"></script>

<script src="fullcalendar/lib/locales-all.js"></script>

 

<script>

 

$(document).ready(function () {

    var calendar = $('#calendar').fullCalendar({

        editable: true,

        events: "fetch-event.php",

        displayEventTime: false,

        eventRender: function (event, element, view) {

            if (event.allDay === 'true') {

                event.allDay = true;

            } else {

                event.allDay = false;

            }

        },

        locale: "ko",

        selectable: true,

        selectHelper: true,

        select: function (start, end, allDay) {

            var title = prompt('내역 추가');

 

            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: 'add-event.php',

                    data: 'title=' + title + '&start=' + start + '&end=' + end,

                    type: "POST",

                    success: function (data) {

                        displayMessage("Added Successfully");

                    }

                });

                calendar.fullCalendar('renderEvent',

                        {

                            title: title,

                            start: start,

                            end: end,

                            allDay: allDay

                        },

                true

                        );

            }

            calendar.fullCalendar('unselect');

        },

       

        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>

 

<style>

body {

    margin-top: 50px;

    text-align: center;

    font-size: 12px;

    font-family: "Lucida Grande", Helvetica, Arial, Verdana, sans-serif;

}

 

#calendar {

    width: 700px;

    margin: 0 auto;

}

 

.response {

    height: 60px;

}

 

.success {

    background: #cdf3cd;

    padding: 10px 60px;

    border: #c3e6c3 1px solid;

    display: inline-block;

}

</style>

</head>

<body>

    <h2>일정 예약</h2>

 

    <div class="response"></div>

    <div id='calendar'></div>

</body>

</html>

 

DB를 연결시키는 db.php 입니다. (주석 처리한건 기존에 mysql과 연동되어있던 소스코드입니다.)

Copy
<?php

// $conn = mysqli_connect("localhost","root","test","phpsamples") ;

 

// if (!$conn)

// {

// echo "Failed to connect to MySQL: " . mysqli_connect_error();

// }

 

// DB 정보 등은 회사 정보들이라 불가피하게 가리겠습니다.

$smt_DB_IP = "(DB IP)";

$smt_DB_ID = "(DB_ID)";

$smt_DB_PWD = "(DB_PW)";

$smt_DB_NAME = "(DB_NAME)";

$smt_DB_ConnectInfo = array("UID"=>$smt_DB_ID, "PWD"=>$smt_DB_PWD, "Database"=>$smt_DB_NAME);

 

date_default_timezone_set('Asia/Seoul');

 

$conn = sqlsrv_connect($smt_DB_IP, $smt_DB_ConnectInfo);

 

if ($conn) {

    echo "접속성공!";

}

else {

    echo "접속실패! ".mssql_get_last_message();

}

?>

 

 

fetche-event.php 입니다.

Copy
<?php

    // require_once "db.php";

 

    // $json = array();

    // $sqlQuery = "SELECT * FROM tbl_events ORDER BY id";

 

    // $result = mysqli_query($conn, $sqlQuery);

    // $eventArray = array();

    // while ($row = mysqli_fetch_assoc($result)) {

    //     array_push($eventArray, $row);

    // }

    // mysqli_free_result($result);

 

    // mysqli_close($conn);

    // echo json_encode($eventArray);

 

    require_once "db.php";

 

    $json = array();

    $sqlQeury = "SELECT * FROM tblCalendar ORDER BY MeetingDate, StartTime";

 

    $result = sqlsrv_query($conn, $sqlQeury);

    $eventArray = array();

 

    while ($row = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)) {

        array_push($eventArray, $row);

    }

 

    echo json_encode($eventArray);

?>

 

우선 SELECT를 통해 DB와 연결이 성공해서 달력에 DB에 존재하는 일정들이 표시된 후에 추가, 수정, 삭제 하는걸 구현하고자 합니다.

도와주신다면 정말 감사드립니다.

답변 1개

이정도면 제작의뢰 쪽으로 가시는게 더 효율적이라 생각됩니다.

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

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

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

로그인
🐛 버그신고