Jump to content
Larry Ullman's Book Forums

Date_format function not working.

Recommended Posts

Hi Larry,


Thanks for your reply to my problem with splitting numbers and alphas.


I have a new problem now and am baffled.  I am putting together a little blog for which I am using MySQL and php.  The database is populated fine and I can pùll the date as $date from the MySQL,  The problem is when I try to format it as, for example, Monday 27 July 2021.  The code is:

Previous code includes calling $dbc, etc etc.

$blog2 = @mysqli_query($dbc, $blog1);
while ($blog3 = @mysqli_fetch_array($blog2))
    $ref = $blog3['Ref'];
    $date = $blog3['Date'];

It all works up to here:

    $date2 = date_format($date, 'd/F/Y');
   echo date_format($date, 'j n y') . $date2;

As you can see, I have tried a number of formats.  Nothing at all prints and no error messages.  Using double apostrophes neither.  $date prints as: 2021-09-13 13:33:06 .  The strange thing is that I can copy/paste the code into W3Schools and it works perfectly (by adding a line at the top: $date=date_create("2013-03-15");  See https://www.w3schools.com/php/phptryit.asp?filename=tryphp_func_date_format 

For example, W3Schools gives me: 13 Sep 2021 when I run:

$date=date_create("2021-09-13 13:33:06");
echo date_format($date,"d M Y");

If I have to I can use some string functions to pull the date apart and re-organize it, but date_format should work, no?

As always, your assistance is greatly appreciated.



You can see $date as it comes out here: http://www.zrm.es/blog.php

Link to comment
Share on other sites

My inclination is it's either not being stored or retrieved in a format that PHP can use. I'd check/confirm your column type. Also, it's best not to use "Date" as a column name since it's also a keyword in MySQL.

That being said, I'd have MySQL return the data in the format you want, rather than ask PHP to convert it. 

Link to comment
Share on other sites

Larry, you're a star!

Firstly, it didn't cross my mind about 'Date' being a keyword in SQL!!  I have now resolved the issue - code below.  The results can be seen here: http://www.zrm.es/blog.php

Yes, I know that my CSS is shocking, but I am just a hobbyist, not a professional and just hate it!!

Interestingly, experimenting I can't get date_format() in php to work at all.  No matter.  I won't use it again.

Thanks again, Larry.


$_title = "blog.";
$_description = "blog";
$keyword = "blog";
include ('header.php');
require_once('../users.php');  //This is the $dbc routine.
?><br /><br />
<div style = "width: 80%; margin: auto; ">
<p style = "margin: auto; border: 6px solid rgb(62,60,100); width: 15%; height: 30px; padding: 1.8% 0 0 0; text-align: center; font-family: sans-serif; color: rgb(62,60,100); background-color: rgb(255, 204, 0); font-weight: bold; ">BLOG</p>
<br /><br /><br /><table style = "border: 3px solid rgb(62,60,100); width: 99%; ">
date_default_timezone_set('Europe/Madrid');  //actually in header.php as well - put this in out of dessperation.
$blog1 = "SELECT * , DATE_FORMAT(Date1, '%W, %e %M %Y') AS 'FD' FROM ZRM ORDER BY Date1 DESC";  //SQL request including the formatted date
$blog2 = @mysqli_query($dbc, $blog1);   //Do the query
while ($blog3 = @mysqli_fetch_array($blog2))    //while loop to extract the data from the array
    $ref = $blog3['Ref'];  //Dont really need this but hey
    $date1 = $blog3['FD'];  //Formatted date
    $comments = $blog3['Comments'];  //Text
    $image = $blog3['Image'];   //image name
    echo '<tr><td><a href = "images/raw/' . $image . '.jpg" target = "_blank"><img src = "images/reduced/' . $image . 'jpg" alt = "Sorry, image missing." title = "Click to enlarge." style = "border: 2px solid black; margin: 5px;  margin-top: 5px; margin-bottom: 5px; margin: auto; " /></a></td><td style = "padding: 5%; vertical-align: top; "><p style = "vertical-align: top; text-align: right; "><b>' . $date1 . '</b></p><br /><br /><p>' . $comments . '</p></td></tr>'; 
echo '</table></div>';


Link to comment
Share on other sites


  • Create New...