• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 262
  • Last Modified:

if statement not displaying my statement

I am trying to change what is displayed by using an if statement to change the value.

 After I have queried database, instead of having '00-00-0000' in the date field if there is no date set, i would change it to 'No date set'. However, this is not updating the display with that text. Can someone point out where I have gone wrong in my code. Thanks

$query_rs_rpt_in = sprintf("SELECT * FROM boxes WHERE customer = '%s'AND COALESCE(custref,'') != ''", $colname_rs_rpt_in);

Open in new window


<?php 	

      if ($row_rs_rpt_in['boxin_date'] == '00-00-0000')
		     
             {echo 'No date set';}
      else 
             {echo KT_formatDate($row_rs_rpt_in['boxin_date']);} 

?>

Open in new window

0
peter-cooper
Asked:
peter-cooper
  • 5
  • 4
  • 2
1 Solution
 
Ray PaseurCommented:
0
 
peter-cooperAuthor Commented:
Sorry Ray, do not understand your answer. Thanks
0
 
Ray PaseurCommented:
Read the article.  There is a standard for date formats in computing.  ISO-8601 makes life easier because it creates predictable formats for date/time strings.

Executive summary:

1. Define your table columns with data type = DATE or DATETIME
2. Make the default value '0000-00-00 00:00:00'
3. Convert all date representations to ISO-8601 with the date('c') formatter.
4. Magically, your date computations will start to work sensibly!
0
Never miss a deadline with monday.com

The revolutionary project management tool is here!   Plan visually with a single glance and make sure your projects get done.

 
Chris StanyonCommented:
var_dump the data and you'll see instantly whether it should match:

var_dump($row_rs_rpt_in['boxin_date']);
if ($row_rs_rpt_in['boxin_date'] == '00-00-0000') {
   echo 'No date set';
} else {
   echo KT_formatDate($row_rs_rpt_in['boxin_date']);
} 

Open in new window

If your database is not returning EXACTLY 00-00-0000 then your IF won't match - it's unlikely as dates are usually stored as YYYY-MM-DD, so it's probably 0000-00-00!
0
 
peter-cooperAuthor Commented:
@Chris

It shows as this: string '0000-00-00' (length=10) so I have changed but I also think I need to change and check for and NULL entries. How would I check for NULL Chris.
0
 
peter-cooperAuthor Commented:
@Ray Thank you
0
 
Chris StanyonCommented:
Like this:

if ($row_rs_rpt_in['boxin_date'] == '0000-00-00' || is_null($row_rs_rpt_in['boxin_date']) {

Open in new window

You might also need to check for '' using empty($row_rs_rpt_in['boxin_date']).

A better option, depending on your needs would be to setup your Date column to have a default value of 0000-00-00 and not accept NULL
0
 
Ray PaseurCommented:
Edit...

2. Make the default value '0000-00-00 00:00:00' for DATETIME columns
2.A. Make the default value '0000-00-00' for DATE columns
2.B. Make both types NOT NULL
0
 
Ray PaseurCommented:
Considering this and your other question about how to handle dates in data bases, you might want to read this brief but thoughtful article from another of our colleagues here at EE.
http://www.experts-exchange.com/Programming/Languages/SQL_Syntax/A_11210-Beware-of-Between.html
0
 
peter-cooperAuthor Commented:
Thanks once again Chris.
0
 
Ray PaseurCommented:
NP.  I think you can change the contents of the solution :-)
0

Featured Post

Never miss a deadline with monday.com

The revolutionary project management tool is here!   Plan visually with a single glance and make sure your projects get done.

  • 5
  • 4
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now