#php #html #date
Вопрос:
У меня есть форма с HTML-кодом, похожим на этот:
<div>
<label for="dateCheckin">Date Checking in</label>
<input type="date" name="dateCheckin">
</div>
И я пытаюсь проверить, является ли выбранная дата по крайней мере 2 неделями с текущей даты, используя PHP. Положим, когда я запускаю код, появляется неопределенный индекс: проверка даты.
$checkinDate = strtotime($_POST['dateCheckin']);
if ($checkinDate){
$today = time();
$diff = $checkinDate->diff($today)->days;
$diff /= 7;
$diff = floor($diff);
if ($diff < 2){
echo "Please enter a valid date.";
}
} else{
echo "Please enter a valid date.";
}
Комментарии:
1. Похоже, вы можете запустить это с помощью PHP-CLI? Попробуйте использовать PHP, встроенный в веб-сервер, и запустите.
php -S localhost:8000 <filename>.php
. Кроме того, у вас возникнут проблемы с публикацией без элемента формы. Я бы посоветовал вам взглянуть на следующее: Публикация данных с помощью PHP2. Вероятно, он не использует метод post, использующий элемент формы
Ответ №1:
Попробуй это. Я рекомендую вам использовать DateTime()
объект вместо time()
функции.
$checkinDate = new DateTime('2021-05-14 09:52:52'); //use your actual POST value here
if ($checkinDate){
$today = new DateTime();
$diff = $checkinDate->diff($today);
$days= $diff->format('%a');
if($days>14){
echo "2 Weeks done. Please enter a new date";
}
else{
echo "Not done 2 weeks yet.";
}
}
Ответ №2:
Свидания — это сложно, и ты вроде как делаешь это самым трудным способом.
Я настоятельно рекомендую использовать DateTime
объект, и вы получите что-то вроде этого:
$checkinDate = DateTime::createFromFormat('Y-m-d H:i:s', $_POST['dateCheckin']);
if ($checkinDate) {
$twoWeeksDate = new DateTime('now 2 weeks');
if($checkinDate < $twoWeeksDate) {
echo "Please select a date date before: " . $twoWeeksDate->format('d/m/Y');
}
} else {
echo "Please enter a valid date.";
}
Обязательно измените формат даты, чтобы он был правильным форматом для ваших входов и выходов.
Комментарии:
1. Спасибо. Я исправил свой код на основе вашего решения, однако по-прежнему существует неопределенная ошибка индекса. У вас есть какие-либо идеи, почему происходит эта ошибка?
2. либо у вашей
$_POST
переменной нет ключаdateCheckin
, и вам нужно исправить его на что-то другое, либо у какого-то другого массива та же проблема.Undefined Index
это просто означает, что вы пытаетесь получить доступ к массиву с помощью ключа или индекса, которого не существует.3. @Tran если это действительно решило ваш вопрос, как было задано, пожалуйста, примите этот ответ, чтобы другие с тем же вопросом могли знать, что это помогло.
Ответ №3:
Ваши данные не передаются в метод POST, поэтому вы получаете неопределенную ошибку индекса
<form action="Your Action page" Method="POST">
<label for="dateCheckin">Date Checking in</label>
<input type="date" name="dateCheckin">
<button type="submit"></button>
</form>