2012-03-13 2 views
6

Jquery fullcalender에서 되풀이 이벤트를 표시하는 방법 ?? 특정 일에 이벤트를 시작하고 다음 1 년 동안 계속 실행하면 어떻게 fullcalender에 표시 할 수 있습니까?Jquery Fullcalender 되풀이 이벤트

참고 : 이벤트 정보는 상자 밖으로 반복 이벤트를 지원하지 않습니다

+1

향후 독자는 지금이 작업을 더 쉽게 수행 할 수 있습니다 (사용자의 특정 요구에 따라 다를 수 있음). http://stackoverflow.com/questions/15161654/recurring-events-in-fullcalendar – slicedtoad

답변

14

전체 일정 사전에 데이터베이스

감사에서오고있다. 여기 내가 한 일이있다.

이벤트를 추가 할 때 반복 이벤트를위한 선택 상자가 있습니다. 사용자가 매주 반복하도록 선택했다고 가정 해 보겠습니다. 그런 다음 해당 이벤트의 모든 인스턴스에 대해 동일하게 될 상위 ID를 사용하여 이벤트 테이블에 이벤트를 삽입합니다.

전체 일정 관리를 사용하면 되풀이 일정에 동일한 이벤트 ID가 있어야합니다. 그래서 내 이벤트 테이블에는 고유 한 이벤트 ID 열과 이벤트를 렌더링하는 데 사용하는 열인 부모 ID가 있습니다.

어쨌든 첫 번째 이벤트를 삽입 한 직후 동일한 부모 ID를 가진 마지막 삽입 이벤트를 선택하고 7 일을 추가 한 후 이벤트 테이블에 삽입하는 루프를 실행합니다. 이 과정을 50 번 더 반복하면 1 년 동안 매주 발생하는 이벤트가 발생합니다. 여기

가 일부 코드의 : 사용자가 나는 대화 상자에서 대화

select: function(start, end){ 

      $("#add_class").dialog("open"); 
    }, 

을 열 시간 프레임을 선택하면

, 나는 드롭 다운 내가 제출 그런

<div id="add_class" title="Add New Class"> 

    <form action=""> 
    <div id="recurring_event"> 
     <label for = "recurring">Recurring </label> 
     <input type="checkbox" name="recurring" id="recurring" /> 
     <div id = "recurring_options" > 
      Repeat every <select name = "repeat_frequency" id = "repeat_frequency"> 
      <option value ="1">Day</option> 
      <option value="7" selected="selected">Week</option> 
      <option value = "28">Month</option> 
      </select> 
     </div> 
     </div> 
     </form> 
</div> 

을 선택해야 이 정보는 AJAX를 사용하여 PHP 페이지 add_class.php에 접속합니다.

$("#add_class").dialog({ 

    "Save Class": function() { 
      var repeat_frequency = $("#repeat_frequency").val(); 
      $.ajax({ 
       type:"POST", 
       url: "add_class.php", 
       data: "repeat_frequency=" + repeat_frequency, 
       async: false, 
      }); 
       $('#calendar').fullCalendar('refetchEvents'); 
       $(this).dialog("close"); 

      }, 
      Cancel: function() { 
       $(this).dialog("close"); 
      } 
     }, 
(210)

여기 그래서 사물의 단지 일반적인 요점이다 내가 실제로 데이터베이스

 $repeat_frequency = $_POST['repeat_frequency']; 

     $dbh = new PDO("mysql:host=$mysql_hostname;dbname=$mysql_dbname", $mysql_username, $mysql_password); 
     $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION, PDO::MYSQL_ATTR_USE_BUFFERED_QUERY); 
     $stmt = $dbh->prepare(
        "INSERT INTO events (start, end) //whatever variables you received from the AJAX post on the dialog form 
        VALUES (:start, :end)"); 

     $stmt->bindParam(':start', $start); 
     $stmt->bindParam(':end', $end); 
     $stmt->execute(); 

     $id = $dbh->lastInsertId(); 

     for($x = 0; $x < "51"; $x++) { 

     $stmt = $dbh->prepare(" 
         SELECT start, end 
         FROM events 
         WHERE event_id = :event_id "); 

     $stmt->bindParam(':event_id', $event_id, PDO::PARAM_STR); 
     $stmt->execute(); 
     $result = $stmt->fetch(PDO::FETCH_ASSOC); 
     $start = $result['start']; 
     $end = $result['end']; 

     $start_date= strtotime($start . '+' . $repeat_frequency . 'DAYS'); 
     $end_date= strtotime($end . '+' . $repeat_frequency . 'DAYS'); 
     $start = date("Y-m-d H:i", $start_date); 
     $end = date("Y-m-d H:i", $end_date); 
     unset($stmt); 
     $stmt = $dbh->prepare(
        "INSERT INTO events (start, end) //and whatever other columns you need 
        VALUES (:start, :end)"); 


     $stmt->bindParam(':start', $start, PDO::PARAM_STR); 
     $stmt->bindParam(':end', $end, PDO::PARAM_STR); 
     $stmt->execute(); 
     $event_id = $dbh->lastInsertId(); 
} 

로를 입력 add_class.php 부분을 온다. 잘만되면 필자는 오타가 너무 많아서 필자가 요점을 이해하기위한 필수 요소로 편집하려고 시도하지 않았다. 궁금한 점이 있으면 알려주세요.

편집은 이벤트 소스가 필요 fullcalendar에

으로 "디스플레이"이벤트.

체크 아웃 귀하의 JSON-events.php에서이 링크

http://fullcalendar.io/docs/event_data/events_json_feed/

을 당신은 이벤트 데이터를 에코 후이 달력에 표시됩니다.

은 다음과 같이 당신의 myfeed에서 캘린더 페이지

$('#calendar').fullCalendar({ 
events: '/myfeed.php' 
}); 

에 이벤트를 표시해야합니다.PHP 파일의 라인을 따라 무언가가 있습니다

$dbh = new PDO("mysql:host=$mysql_hostname;dbname=$mysql_dbname", $mysql_username, $mysql_password); 
     $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // set the error mode to excptions 
     $stmt = $dbh->prepare("SELECT 
           event_id, title, start, end 
           FROM events 


           ORDER BY start"); 

     $stmt->execute(); 

     $events = array(); 

     while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){ //important ! $start = "2010-05-10T08:30"; iso8601 format !! 

      $eventArray['id'] = $row['event_id']; 
      $eventArray['title'] = $row['title']; 
      $eventArray['start'] = $row['start']; 
      $eventArray['end'] = $row['end']; 

      $events[] = $eventArray; 
      echo json_encode($events); 

질문이 있으시면 여기서 stackoverflow를 검색하십시오. 나는 그것을 꽤 잘 설명하고 많은 코드를 제공했다고 생각한다. 여기에 내가 도울 수있는 블로그 게시물이 있습니다 http://fajitanachos.com/Fullcalendar-and-recurring-events/ 여기 fullcalendar 홈 페이지에서 fullcalendar 홈 페이지를 실행하는 데 필요한 모든 것을 찾았습니다. http://fullcalendar.io/

나는 이것이 도움이되기를 바랍니다.

+0

답장을 보내 주셔서 감사합니다 .... 몇 가지 코드를 보내면 큰 도움이 될 것입니다 :) – Gautam

+0

답장을 보내 주셔서 감사합니다 .... 모든 반복 이벤트를 저장하는 방법에 대해 알고 싶습니다만,이 반복 이벤트를 데이터베이스에 표시하고이 캘린더에서 Java를 사용하는 방법을 알고 싶습니다. – Gautam

+0

Java 또는 Javscript를 사용하고 있습니까? Fullcalendar는 Javascript를 사용합니다. fullcalendar를 사용하면 이벤트 소스를 사용하여 이벤트를 표시 할 수 있습니다. Google 캘린더이거나 파일에서 가져온 데이터베이스의 이벤트 일 수 있습니다. 렌더링하는 각 이벤트는 동일한 이벤트 ID를 가져야합니다. 가장 쉬운 방법은 동일한 이벤트 ID를 갖는 각 이벤트에 대해 데이터베이스에 별도의 행을 가져야한다는 것입니다. 나는 데이터베이스에서 하나의 이벤트 만 호출 할 때 이벤트를 반복하는 좋은 방법을 알고 있지 않습니다. – FajitaNachos