프런트 엔드로 FullCalendar를 사용하는 캘린더 시스템을 구축 중입니다. 백엔드는 MySQL/PHP가 될 것입니다.iCal 백엔드 - 되풀이 날짜
응용 프로그램에서 생성 및 삽입 한 사용자의 공개 약속 목록을 저장합니다. 이 임명은 같은 날에 시작하고 끝낼 단일 사건이 될 것입니다. 또한 사용자는 개인적인 약속으로 인해 달력에서 사용할 수 없음을 표시 할 수 있습니다. 이 후자의 기능을 사용하려면 되풀이 이벤트를 사용해야합니다. 휠을 다시 발명하기보다는 iCal을 기반으로 한 구조를 사용하고 있습니다. 이 게시물은 데이터베이스 구조를 결정할 때 매우 도움이되었습니다 ical-field-list-for-database-schema-based-on-ical-standard.
저는 개인/단발 약속을 저장하기 위해 필요한 데이터를 입력 할 수있는 신청서 양식을 만들었습니다. 양식을 제출하면 Ajax를 통해 서버로 데이터가 전송됩니다. 나는 네이티브 형식이나 RRULE을 사용하여 사용자가 입력 한 매개 변수를 기반으로 되풀이 날짜 배열을 생성하는 훌륭한 PHP 스크립트를 발견했습니다.
이 반복 날짜를 저장/검색하는 가장 좋은 방법은 무엇인지 알 수 없습니다. 응용 프로그램은 공용 및 개인 날짜를 포함하여 사용자에 대한 일정보기를 렌더링 할 수 있어야합니다. 응용 프로그램은 또한 주어진 시간/날짜 기간 동안 무료 일 수있는 모든 사용자를 반환 할 수 있어야합니다.
모든 이벤트를 iCal 형식으로 저장하고 필요에 따라 이벤트를 검색하는 것으로 충분합니까? 예상 할 수있는 문제는 반복되는 이벤트를 매개 변수를 즉시 확장해야하므로 쉽게 검색 할 수 없다는 것입니다. 나는 그것을 생성 한 원래의 RRULE에 대한 참조를 가진 모든 개별 이벤트 (생성 된)의 두 번째 테이블을 만드는 것을 고려하고 있었다. 앞으로 100 년 동안 매일 사용자가 이벤트에 참가할 수 없도록하기 위해 사용자가 입력 할 수있는 되풀이 날짜 수를 제한하려고합니다! 나는이 접근법이 반복적 인 규칙에 의해 원래 생성 된 개별 사건을 편집 할 것이라고 생각한다.
좋은 접근 방법입니까 아니면 더 좋은 방법입니까?
다음CREATE TABLE RecurringAppointments (
startdate DATE NOT NULL,
enddate DATE,
freq INT NOT NULL, -- contains #days between each occurrence
-- etc.
)
가 주어진 thedate
에서 발생하는 이러한 모든 약속을 가져올 : 다음과 같은 라인을 따라 테이블에 대해 어떻게
이 사이트를 검색했지만 많은 유용한 정보가 담긴 링크 된 페이지를 찾지 못했습니다. - 감사합니다. 나는 2 테이블 접근법이 정확하다고 생각한다. 하나는 사건 테이블을 생성하는 rrule을위한 것이다. 끝나지 않는 (또는 장기간에 걸친) 이벤트와 그 이벤트를 제한 할 것인지 또는 주기적으로 확장 할 것인지에 대한 생각을해야 할 것입니다 (아마 cron 작업 일 것입니다). 달력은 달력을 만든 사용자 만 사용할 수있는 것이 아니며 시스템에서 '빈 슬롯'을 찾기 위해 쿼리해야하므로 관련 시간 프레임을 다루는 모든 사용자에 대해 달력을 완전히 확장해야합니다 (에스). – Dave