0

My application lets users store diary entries into a database table. They are free to set the date and time to what they need using html inputs (so I can't simply use the current time because they might want to create an entry in the past).

I'm able to send the date and the time forward as a POST request. Here's how the header looks like:

action: send_daily_event
weight: 
dateAndTime: 2021-06-01 19:08:00

In the database I have a table called "dailyevents". It has a column called "dateAndTime" with the type "datetime".

The database entries are recorded to the table otherwise, but the dateAndTime column remains always 0000-00-00 00:00:00 for each entry.

Here is the relevant part from my functions.php:

function sendDailyEvent(){

    //for storing the logged in user name:
        global $current_user;
        get_currentuserinfo();
        $currUserLoginName = $current_user->user_login;

    $weight = ($_POST["weight"]);

    $dateAndTime = ($_POST["dateAndTime"]);
    
    $sanitizedWeight = sanitize_text_field($weight); /* Checks for problematic things in the string like invalid UTF-8, it converts < characters to entities, strips all tags, removes line breaks, tabs and extra white space. */

    global $wpdb;

    $result_check = $wpdb->insert( 
        'dailyevents',
        array(
            'username' => $currUserLoginName,
            'dateAndTime' => $dateAndTime,
            'weight' => $sanitizedWeight,
            
        ),
        array(
            '%s', 
            '%s', 
            '%d', 

        )
    );

    if($result_check){ //return the response
        echo $result_check;
     }else{
       echo "something went wrong";
     }

    exit();

} /* end send daily event */

My suspicion is that the datetime column in the database doesn't like the fact that I'm trying to give it a string, but I don't know how else I should format my $dateAndTime variable.

1 Answer 1

0

Got it to work by formatting the $dateAndTime string like this before binding it:

$formattedDateAndTime = date("Y-m-d H:i:s", strtotime($dateAndTime));

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.