2012-05-31 7 views
9

Jak utworzyć wydarzenie, gdy użytkownik kliknie dowolną część kalendarza? a następnie zapisać go w bazie danych jako nowe wydarzenie? Wiem, że musisz użyć: wybierz: function (start, end, allDay), aby uzyskać czasy "rozpoczęcia" i "zakończenia". Ale kiedy otrzymam te dane, w jaki sposób przekazuję je do bazy danych?utwórz wydarzenie z pełnym kalendarzem, klikając kalendarz (szyny)

Dzięki!

Odpowiedz

22

Możesz użyć żądania ajax, aby zapisać nowe wydarzenie w swoim DB.

Na stronie domowej projektów znajduje się demo, którą można łatwo dostosować.
Via jQuery na przykład tak:

select: function(start, end, allDay) { 
    var title = prompt('Event Title:'); 
    if (title) { 
     calendar.fullCalendar('renderEvent', 
      { 
       title: title, 
       start: start, 
       end: end, 
       allDay: allDay 
      }, 
      true // make the event "stick" 
     ); 
     /** 
     * ajax call to store event in DB 
     */ 
     jQuery.post(
      "event/new" // your url 
      , { // re-use event's data 
       title: title, 
       start: start, 
       end: end, 
       allDay: allDay 
      } 
     ); 
    } 
    calendar.fullCalendar('unselect'); 
} 

Jeśli trzeba reagować na konkretnym kliknięcia, można również spróbować, ale trzeba grep koniec zdarzeń lub czasu trwania samemu.

dayClick: function(date, allDay, jsEvent, view) { 
    var title = prompt('Event Title:'); 
    /** 
    * again : ajax call to store event in DB 
    */ 
    jQuery.post(
     "event/new" // your url 
     , { // re-use event's data 
      title: title, 
      start: date 
      allDay: allDay 
     } 
    ); 
} 
+0

dzięki. Ale mam problem, mimo że wysyłamy parametry z tytułem, początkiem i końcem. Kontroler Railsów ich nie otrzymuje:/Jak mam je poprawnie przekazać? – CanCeylan

+0

Cześć, zależy to od tego, w jaki sposób kontroler szyn obsługuje parametry przekazywane przez żądanie postu jQuery. Proste wyszukiwanie google może załatwić sprawę! – domi27

+0

domi27, czy możesz mi powiedzieć, jak utworzyć/wyrenderować nowe wydarzenie, jeśli chcesz przypisać je do sby? Powiedzmy, że chciałbym przypisać to wydarzenie do Johna Smitha, który jest moim kolegą (obecny w moim systemie szyn). Zanim renderEvent muszę podać dane, ale jak mogę je pobrać z bazy danych? tytuł jest łatwy, ponieważ jest to tylko typ użytkownika typu string, początek i koniec będą przekazywane przez jquery, ale nie mam pojęcia, jak uzyskać istniejące rzeczy. –

2

Tutaj dzielę się tym, co robię. utworzyć okienko i uzyskać numer mieszkania i numer PIN od użytkownika a następnie poprzez AJAX i stworzyć nowe wydarzenie żądając zwyczaj insert_data.php złożyć oto kod dla fullcalendar.php

  selectable: true, 
      selectHelper: true, 
      select: function(start, end, allDay) { 
          //alert(start); 
          var title = $("#dialog").dialog(); 
          //$(".popup").show(); 
          //$(".title").focus(); 
          var start = start; //Date.parse(start)/1000; 
          var end = end; //Date.parse(end)/1000; 
          var allDay = allDay; 
          //alert(allDay); 

          $("#save_frm").click(function(){ 


           var pin_number = $("#pin_number").val(); 
           var apartment_number =$("#apartment_number").val(); 

           //alert(start); 
           //alert(end); 
           //alert(allDay); 
           $.ajax({ 
            type: "POST", 
            url: "<?php echo WP_PLUGIN_URL; ?>/wp-fullcalendar/insert_data.php", 
            data: { apartment_number: apartment_number, pin_number: pin_number, start: start, end: end, allDay: allDay } 
           }).done(function(msg) { 
            alert("Data Saved: " + msg); 
            $("#dialog").dialog("close"); 
            window.location.reload(true); 
            calendar.fullCalendar('unselect'); 
            calendar.fullCalendar('refetchEvents'); 


           }); 

          });//select function end here 

          // calendar.fullCalendar('unselect'); 
         }, 

// a następnie wniosek ajax idzie do insert_data.php kod bellow należy umieścić osobny plik

require("../../../wp-load.php");  //connection with database 
require("../../../wp-config.php"); 

//print_r(explode(" ",$_POST['end'])); 

$start = explode(" ",$_POST['start']); 
//coding for extracting date 
$start_date=$start[3].'-'; 
//$start_date.=$start[1].'-'; 
if($start[1]=='Jan') 
{ 
    $start_date.='01'; 
} 
else if($start[1]=='Feb') 
{ 
    $start_date.='02'; 
} 
else if($start[1]=='Mar') 
{ 
    $start_date.='03'; 
} 
else if($start[1]=='Apr') 
{ 
    $start_date.='04'; 
} 
else if($start[1]=='May') 
{ 
    $start_date.='05'; 
} 
else if($start[1]=='Jun') 
{ 
    $start_date.='06'; 
} 
else if($start[1]=='Jul') 
{ 
    $start_date.='07'; 
} 
else if($start[1]=='Aug') 
{ 
    $start_date.='08'; 
} 
else if($start[1]=='Sep') 
{ 
    $start_date.='09'; 
} 
else if($start[1]=='Oct') 
{ 
    $start_date.='10'; 
} 
else if($start[1]=='Nov') 
{ 
    $start_date.='11'; 
} 
else if($start[1]=='Dec') 
{ 
    $start_date.='12'; 
} 

$start_date.='-'.$start[2]; 
//coding for extracting date end here 
$start_time = $start[4]; 

$end = explode(" ",$_POST['end']); 
$end_time = $end[4]; 
global $wpdb; 
//$table_name = $wpdb->prefix . "em_events"; 
//$wpdb->insert($table_name, array('album' => $_POST['album'], 'artist' => $_POST['artist'])); 
// Create post object 

$apartment_number = $_POST['apartment_number']; 
$pin_number   = $_POST['pin_number']; 
$post_date   = $start_date.' ' .$start_time; 

$post = array(      'ID' => '' 
            , 'post_author'   => '1' 
            , 'post_date'   => '' 
            , 'post_date_gmt'  => '' 
            , 'post_content'   => $apartment_number 
            , 'post_tittle'   => $apartment_number 
            , 'post_excerpt'   => $apartment_number 
            , 'post_status'   => 'publish' 
            , 'comment_status'  => 'closed' 
            , 'ping_status'   => 'closed' 
            , 'post_password'  => $pin_number 
            , 'post_name'   => $apartment_number 
            , 'to_ping'    => '' 
            , 'pinged'    => '' 
            , 'post_modified'  => '' 
            , 'post_modified_gmt' => '' 
            , 'post_content_filtered'=> '0' 
            , 'post_parent'   => '0' 
            , 'guid'     => '1' 
            , 'menu_order'   => '0' 
            , 'post_type'   => 'event' 
            , 'post_mime_type'  => $post_date 
            , 'comment_count'  => '0' 
     ); 

// Insert the post into the database 
$post_id=wp_insert_post($post, $wp_error); 

if($wpdb->insert('wp_em_events', array( 
            'post_id'    => $post_id 
            , 'event_slug'   => $_POST['apartment_number'] 
            , 'event_owner'   => 1 
            , 'event_status'   => 1 
            , 'event_name'   => $_POST['apartment_number'] 
            , 'event_start_time'  => $start_time 
            , 'event_end_time'  => $end_time 
            , 'event_all_day'  => 0 
            , 'event_start_date'  => $start_date 
            , 'event_end_date'  => $start_date 
            , 'post_content'   => $_POST['apartment_number'] 
            , 'event_rsvp'   => 0 
            , 'event_rsvp_date'  => $end_date 
            , 'event_rsvp_time'  => '00:00:00' 
            , 'event_spaces'   => 0 
            , 'event_private'  => 0 
            , 'location_id'   => 0 
            //, 'recurrence_id'  => 1223 
            , 'event_category_id' => 1 
            , 'event_attributes'  => 'a:0:{}' 
            , 'event_date_created' => $start_date." ".$start_time 
            , 'event_date_modified' => $start_date." ".$start_time 
            , 'recurrence'   => 0 
            //, 'recurrence_interval' => 12 
            //, 'recurrence_freq'  => 12 
            //, 'recurrence_byday'  => 1231 
            //, 'recurrence_byweekno' => 4564 
            , 'recurrence_days'  => 0 
            //, 'blog_id'    => 456465 
            , 'group_id'    => 0 
    ))){ 

    echo "query execute"; 
    }else{ 
     echo "query not execute"; 
    } 
+4

dlaczego php ?, szyny ... –

+0

Dobre rozwiązanie ... ludzie szyny muszą się dostosować – Nowdeen

Powiązane problemy