pixelJockey
pixelJockey

Reputation: 321

Date sorting of PHP Event

I have an events calender that displays events in the order of start date. Everything works great but there is one issue. Events that occur on today's date don't display. I believe that my "if" statement to remove events after they have passed is the issue.

<? while($row = mysql_fetch_assoc($result)) {
$id = $row['id'];
$title = $row['title'];
$text = $row['text'];
$image_url = $row['image_url'];
$start_date = date('F d, Y', strtotime($row['start_date']));
$start_hour = $row['start_hour'];
$start_minute = $row['start_minute'];
$start_am_pm = $row['start_am_pm'];
$end_date = date('F d, Y', strtotime($row['end_date']));
$end_hour = $row['end_hour'];
$end_minute = $row['end_minute'];
$end_am_pm = $row['end_am_pm'];
$tba = $row['tba'];

if(strtotime($row['end_date']) > date('U')) {
?>

Upvotes: 1

Views: 289

Answers (2)

netcoder
netcoder

Reputation: 67705

First of all, I just want to point out that:

date('U') == time()

So you can use time instead of date.

Now for your problem. If the end_date of your event is set to today, it's probably at the beginning of the day (i.e.: 2010-11-18 00:00:00). That's probably why your conditional does not work, because now is past midnight, the current date/time is greater than the end_date.

Try this:

if (strtotime($row['end_date']) == strtotime('TODAY')) {
    // event is today
}

Upvotes: 3

Parris Varney
Parris Varney

Reputation: 11478

I'm guessing that $row['end_date'] only returns the date not the time. So strtotime($row['end_date']) will = 12:00AM and date('U') will equal return the current time.

So if you ran this at 12:01AM on the date of $row['end_date'], you'd have the comparison of

if("12:00AM today" > "12:01AM today") {

Try

if (strtotime($row['end_date']) >= strtotime(date('Y-m-d'))) {

Upvotes: 0

Related Questions