0

So I was able to find the root cause of my earlier problem.

Turns out it was the querying that is the problem. Well, not on my side, at least not that I think so. This problem has been bugging me for many hours now. Unfortunately, it something I don't know how to fix.

Please check this code:

public function get_calendar_content($y,$m){ $query = $this->db->query("SELECT * from events WHERE event_date LIKE '$y-$m%'"); $content=array(); foreach($query->result() as $q){ $content[substr($q->event_date,8,2)]=$q->event_details; } return $content; 

}

This function ignores whatever I supply for the $m, or the month. It only cares about the year. Plus, when I tried selecting all data from the events table instead of having a where clause, it still only returns the entries or data from the events table which is is dated in the month of August.

When I tried writing the where clause explicitly to event_date LIKE '2013-09%', it wouldn't return any data at all. I don't understand what's going on. For some unknown reason, the function would only return data from August. I already tried writing the query on phpMyAdmin, and it works just how it's supposed to do. It only produces irregularity in my app. What could my problem be?

Edit: I'm now using multidimensional array. It fixed the confusion about multiple events, but still does not return data from other months.

public function get_calendar_content($y,$m){ $query = $this->db->query("SELECT * from events WHERE event_date LIKE '$y-$m%'"); $content=array(); foreach($query->result() as $q){ $content[substr($q->event_date,8,2)][]=$q->event_details; } return $content; } 
5
  • When you wrote it explicitly, did you use event_date LIKE '2013-09' or event_date LIKE '2013-09%'? Commented Aug 26, 2013 at 17:07
  • I'm sorry, I wrote it with '2013-09%' Commented Aug 26, 2013 at 17:08
  • What value are you setting for $m? An integer? Commented Aug 26, 2013 at 17:10
  • $y and $m are strings. Commented Aug 26, 2013 at 17:12
  • 1
    If @koala_dev's solution doesn't work, try assigning the query to a variable, and echoing it out to see if it looks the way you expected. Commented Aug 26, 2013 at 17:16

1 Answer 1

2

The problem is in how you're building the return array:

substr($q->event_date,8,2) will get the day for each event (1-31) and you're using it as your key, but an array can't have repeating keys, so only the last value will be kept.

The solution is to change the key values for your array so they don't repeat

Sign up to request clarification or add additional context in comments.

11 Comments

I see. That could be it. Since I allow multiple events per day, does that mean I'll have to use multidimensional array instead?
@ChristianCastillo if you're looking for data from one month only, yes you can just do $content[substr($q->event_date,8,2)][] = $q->event_details
Turns out I'll have to do the not-so-good way of modifying CI's calendar library. Thanks so much!
Wait. It kinda solved the "multiple event per day" issue but still it does not return data from other months except august. I updated the code.
@ChristianCastillo Place var_dump($this->db->last_query()) before the return statement and check the query that's being used, I believe the problem is not in the function but in the argument you're passing to $m
|

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.