Я ищу решение для захвата ввода пользователя из ввода HTML, установленного на значение «datetime-local», в базу данных MySQL с полем таблицы, установленным на «datetime». Каждый раз, когда я отправляю форму, создается идентификатор и сохраняется дата, а время - нет. Пример: 2018-11-20 00:00:00.
Мой HTML:
<form class = "" action = "/index.php" method = "post">
<input type = "datetime-local" name = "myDate" id = "myDate"><br /><br />
<button id = "submit" value = "submit">Submit</button><br /><br />
</form>
Мой PHP:
// Check Our Connection
if ( $mysqli->connect_error ) {
die( 'Connect Error: ' . $mysqli->connect_errno . ': ' . $mysqli->connect_error );
}
// Insert Our Data
$sql = "INSERT INTO test_one ( mydate ) VALUES ( '{$mysqli->real_escape_string($_POST['myDate'])}' )";
$insert = $mysqli->query($sql);
// Print Response from MySQL
if ( $insert ) {
echo "Success! Row ID: {$mysqli->insert_id}";
} else {
die("Error: {$mysqli->errno} : {$mysqli->error}");
}
// Close Connection
$mysqli->close();
Я получил код из учебника на Youtube, и пока он работает. Я просто хочу получить время, которое они выбирают.
ОБНОВИТЬ: Время экономится, но похоже на военное время. Пример: Ввод = 22.11.2018 17:00; Выход = 2018-11-22 17:00:00
ОБНОВЛЕНИЕ ПОСЛЕ ПЕРВОГО КОММЕНТАРИИ: Это направляет меня на неудачный HTTP-запрос -
// Check Our Connection
if ( $mysqli->connect_error ) {
die( 'Connect Error: ' . $mysqli->connect_errno . ': ' . $mysqli->connect_error );
}
// Insert Our Data
$date = strftime('%Y-%m-%d %H:%M:%S', strtotime(real_escape_string($_POST['myDate'])));
$sql = "INSERT INTO test_one ( mydate ) VALUES ( '{$mysqli->real_escape_string($_POST['$date'])}' )";
$insert = $mysqli->query($sql);
// Print Response from MySQL
if ( $insert ) {
echo "Success! Row ID: {$mysqli->insert_id}";
} else {
die("Error: {$mysqli->errno} : {$mysqli->error}");
}
// Close Connection
$mysqli->close();
Если это имеет какое-либо отношение к '' около $ date, я пробовал без него и получил ту же ошибку.
Заранее спасибо!






Проблема в том, что datetime-local добавляет T посередине, то есть 2018-11-19T10: 52: 23. Вы должны изменить формат, чтобы удалить T. Может быть, попробуйте следующее:
$date = strftime('%Y-%m-%d %H:%M:%S', strtotime(real_escape_string($_POST['myDate'])));
@EataSandwhich Вы использовали его как $ _POST ['date']? Поскольку это не сработает, это должно быть просто $ date. т.е. ЗНАЧЕНИЯ ($ date)
Я обновлю свой вопрос, чтобы включить новый код @Dan W.
@EataSandwhich Время 'военное время' - это то, как серверы обрабатывают datetime, вы должны преобразовать его обратно после того, как вы вытащите его из базы данных.
Ох, хорошо. так что я думаю, что тогда я хорошо с этим, не так ли? Если вы не можете сказать, что я эксперт в этом хахах @Dan W.
К сожалению, у меня это не сработало. Однако, спасибо! Я поместил его над строкой $ sql, затем обновил $ _POST после VALUE, чтобы зафиксировать $ date, но после отправки формы я получил ошибку HTTP. @ miken32