1

I am trying coding a php script where i want to extract a date field from a database table,store this date compare it with todays. To see if the data. from database has passed or not compared to todays date.

  1. the code i have written for this functionality looks like its not working
  2. I think i am getting the date() format wrong.
  3. I am not to sure about the logic if statments.

php

$sql="SELECT enddate FROM campaigns WHERE id=".$data['camp'];
    $result = mysqli_query($db, $sql);

while($info = mysqli_fetch_assoc($result)){
    if(date("Y-m-d") > $result){
        exit;
        echo "Success";
    }
    elseif(date("Y-m-d") < $result){
        return true;
        echo "Failure";
    }
}

5 Answers 5

2

Use strtotime()

while($info = mysqli_fetch_assoc($result)){
    if(strtotime(date("Y-m-d")) > strtotime($result)){
        exit;
        echo "Success";
    }
    elseif(strtotime(date("Y-m-d")) < strtotime($result)){
        return true;
        echo "Failure";
    }
}
Sign up to request clarification or add additional context in comments.

Comments

1

You have to do:

if(date("Y-m-d") > $info['enddate']) {

Comments

1

Youl could just let MySQL worry about it.

SELECT DATEDIFF(NOW(),enddate) FROM campaigns WHERE id=".$data['camp']

That will return the number of days between the two dates. See the manual for DATEDIFF.

Comments

0

You can use below query :

$sql="SELECT (CASE WHEN DATE(NOW()) > enddate THEN 'success' ELSE 'failed' END) AS mystatus FROM campaigns WHERE id=".$data['camp'];

Then you just need to call mystatus column from the query.

Comments

0

I spend lot of time to compare only dates and i found a solution like this

Always set format like date('Y-m-d')

$dateTo='2016-08-07';
if(date("Y-m-d", strtotime($dateTo)) > date('Y-m-d')){
   echo 'yes';
}else{
   echo 'no';
}

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.