2016-07-11 3 views
0

Im пытается получить события календаря из mysql db, используя fullcalendar, PHP и angularjs.AngularJS FullCalendar получает события по ID

HTTP

<div ng-controller="calController" ng-show="tab4"> 
    <div id="calendar" ui-calendar="uiConfig.calendar" ng-model="eventSources" calendar="myCalendar"> 
    </div> 
</div> 

Мой Conroller:

.controller('calController', ['$rootScope', '$scope', '$http', 'uiCalendarConfig', function ($rootScope, $scope, $http, uiCalendarConfig) { 

var user = $rootScope.userID; 

$scope.eventSources = { 
    url: 'php/events.php?agentID=' + user 
}; 

$scope.uiConfig = { 
    calendar: { 
     height: 300, 
     editable: false, 
     allDay: false, 
     header: { 
      left: 'title', 
      center: '', 
      right: 'agendaWeek prev,next' 
     } 
    } 
};}]); 

Мой PHP:

$sql="SELECT * FROM `Events`";$sql = $con->prepare($sql);$sql->execute();$results=$sql->fetchAll(PDO::FETCH_ASSOC); $json=json_encode($results); 

Im получая результаты в моем календаре, но они все результаты в БД. Вероятно, потому что statemnt является select * from events...

В контроллере вы можете видеть, что im передает URL с моим параметром «пользователь», но это не влияет на возврат скрипта php.

Итак, мой вопрос заключается в том, как возвращать только определенные события пользователей, а не все события?

Я предполагаю, что мой PHP-файл должен быть изменен, но я не знаю, что делать ..

EDIT:

Ive также пытались получать события в массив, а затем связывание с eventSources:

var user = $rootScope.userID; 

var events = []; 

$scope.eventSources = [events]; 

$http.post('php/events.php', { 
    'user': user 
}).success(function (data) { 

    console.log(data); 

    angular.forEach(data, function (value) { 

     events.push({ 
      start: value.start, 
      end: value.end 
     }); 
    }); 

    console.log("events", events); 
    console.log("sources", $scope.eventSources); 

}); 

Это хорошо работает, чтобы получать события с использованием идентификатора, но теперь я не вижу события в календаре.

console.log("events", events); 
console.log("sources", $scope.eventSources); 

Выход для выше:

enter image description here

Почему Wouldnt события будут появляться в календаре с массивом? Любая помощь будет потрясающей.

Благодаря

+0

обертке от котировки образует имя таблицы вместо этого использовать кавычку – Saty

ответ

0

С немного устранения неполадок я обнаружил, что PHP скрипт нужно назвать один раз был загружен календарь.

После того, как я сделал это, я был в состоянии увидеть событие в календаре:

.controller('calController', ['$rootScope', '$scope', '$http', 'uiCalendarConfig', function ($rootScope, $scope, $http, uiCalendarConfig) { 

var user = $rootScope.userID; 
var isFirstTime = true; 
var events = []; 

$scope.getEvents = function() { 
    $http.post('php/events.php', { 
     'user': user 
    }).success(function (data) { 
     //events = data; 
     angular.forEach(data, function (value) { 
      events.push({ 
       start: value.start, 
       end: value.end 
      }); 
     }); 

    }); 
} 

$scope.eventSources = [events]; 

$scope.uiConfig = { 
    calendar: { 
     height: 300, 
     editable: false, 
     header: { 
      left: 'title', 
      center: '', 
      right: 'month basicWeek basicDay agendaWeek agendaDay prev,next' 
     }, 
     eventAfterAllRender: function() { 
      if ($scope.eventSources.length > 0 && isFirstTime) { 
       isFirstTime = false; 
       $scope.getEvents(); 
      } 

     } 
    } 
};}]); 
Смежные вопросы