Bootstrap DatePicker пользовательский формат сохранения в DATE MySQL - PullRequest
0 голосов
/ 23 марта 2020

У меня есть форма регистрации для веб-сайта, который использует модуль bootstrap datepicker для обработки даты «день рождения» в формате дд.мм.гггг.

Ввод:

<input type="text" id="birthday" name="birthday" data-provide="datepicker" class="form-control datepicker" required />

JS:

$('.datepicker').datepicker({    
   format: "dd.mm.yyyy",    
   weekStart: 1,    
   autoclose: true  
});

Когда пользователь отправляет форму, вот как я получаю день рождения

$user->birthday=$_POST['birthday'];

, а в классе создания пользователя я буду очищать ввод с помощью:

$this->birthday=htmlspecialchars(strip_tags($this->birthday));

Теперь я хочу сохранить это в таблицу MySQL, и столбец «день рождения» отформатирован как DATE, поэтому он должен иметь формат Ymd. Для этого я попытался преобразовать дату следующим образом:

//since I get a string, first convert it to time, create a date from it and format it to Y-m-d and then bind it to the birthday parameter.
$birthday_converted = date_format(date_create(strtotime($this->birthday)),"Y-m-d");
$stmt->bindParam(':birthday', $this->birthday_converted);

При этом я получаю сообщение об ошибке:

Предупреждение: параметр date_format () ожидает 1 - DateTimeInterface, целое число

, хотя дата будет записана в базу данных, но неверно. Например, если выбрана дата 16.03. 2020 (16 марта), в БД я получу 2016 -03-20

1 Ответ

1 голос
/ 23 марта 2020

Я на самом деле только что добавил "преобразование" в часть "санитарная обработка":

$this->birthday=date_format(date_create(htmlspecialchars(strip_tags($this->birthday))),"Y-m-d");

И тогда у меня есть чистый день рождения, готовый для привязки к параметру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...