PHP FullCalendar MSSQL 연동
안녕하세요.
제가 PHP 언어로 일정예약 하는 웹 페이지를 만들어보고 있습니다.
구글, 네이버를 다 뒤져봐도 FullCalendar 라이브러리를 이용해서 MySql 과는 연동을 시키는데 MSSQL 과는 연동시키는 코드가 없더라구요..
우선, 구글링을 통해 아래 링크 속 코드를 이용해서 코딩 중입니다.
https://phppot.com/php/php-calendar-event-management-using-fullcalendar-javascript-library/
일단 MySql로 연동시킨 소스코드를 제가 나름 MsSql로 바꿔봤는데 잘 동작하지 않습니다.
Mssql에서 사용하고자 하는 테이블(tblCalendar) 구조입니다.

이제 코드를 첨부하겠습니다.
메인화면이라 할 수 있는 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개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인