Carl Bembridge
Carl Bembridge

Reputation: 397

Fullcalendar.js allDay parameter returned from MySql using Codeigniter

I'm trying to get FullCalendar working on my Codeigniter app, but coming across a problem with the events showing as all day from my JSON feed.

I've found that setting "allDay":false fixes the problem (tested with a static json file) but when i store that value in a mysql DB, then return the data and run the JSON encode, it converts the False into a string, which cause the event to show as all day!

Does anybody know how i can store true or false in my DB (i'm currently storing as text) and return it to my json feed without it being a string? I've tried casting and converting but can't get anything to work!

Examples of my model/controller/json feed below;

Thanks in advance;

Model function

function show_installs()
{       
    return $this->db->query(
    "SELECT id, client_name as title, start, end, concat('/planner/view_install/',id) as url
    FROM installs WHERE completed != 2"
    )->result();            
}

Controller function

function json_installs()
{
    $this->load->model('installs_model');
    $data = array();        
    if($query = $this->installs_model->show_installs())
    {
        $data = $query;
    }
    $json = json_encode($data);
    echo $json;
}   

JSON Feed (That doesnt work because of the " around false)

[
   {
      "id":"18",
      "title":"John",
      "allDay":"false",
      "start":1339585200,
      "end":1339592400,
      "url":"\/planner\/view_install\/18"
   },
   {
      "id":"19",
      "title":"Mike",
      "allDay":"false",
      "start":"1339585200",
      "end":"1339592400",
      "url":"\/planner\/view_install\/19"
   }
]

Any help would be really appreciated - i just need to get those bloomin quote marks off from false/true and it would work perfectly!

Thanks

Upvotes: 2

Views: 1207

Answers (1)

ganeshk
ganeshk

Reputation: 5631

Why don't you change the column type in your DB to be boolean instead of text? You could also parse your $json object to convert all booleans_as_text to booleans before you set it in the calendar - quick googling found me this:

for(var i=0; i<$json.length; i++)
  $json[i]=/^true$/i.test($json[i]);

You could also set the allDayDefault to false to avoid set allday: false in each event.

Upvotes: 1

Related Questions