Сервер SQL — Как проверить дату ввода пользователя до 3 дней только до даты окончания? Переполнение стека

Как проверить пользователя, если дата окончания ввода превышает 3 дня с даты начала ввода?

Дано:
Код PHP

if(isset($_POST['btnRequest']))
{
$leaveFrom = $_POST['leaveFrom'];
$leaveTo = $_POST['leaveTo'];
}
$sql_insert = "INSERT INTO leaves (leaveFrom, leaveTo) VALUES (?, ?)";HTML Code
<input type="date" id="leaveFrom" name="leaveFrom" class="form-control" required="true" />
<input type="date" id="leaveTo" name="leaveTo" class="form-control"  required="true" />

Типы данных «дата» из Microsoft SQL

Цель:
Чтобы представить дату, если дата колеблется до 3 дней или менее.

(Это для пользователя, который может подать свой «Отпуск по болезни» администратору с ограничением в 3 дня отпуска)

Я попробовал код Zain Farooq, но вот что я попробовал.

    function fourDays()
{
return date("Y-m-d"),strtotime("+ 4days"));
}

$date = date('Y-m-d'),strtotime($leaveTo)); // I want to
validate the input from the input 'leaveFrom' but I have no idea how

if($date >= fourdays())
{
$dispMsg = $dateerrorMsg;
}

0

Решение

Используйте этот код для сравнения двух дат

function today()// it will get date of today
{
return date("Y-m-d");

}
function last_three_day()//it will get date of last third day
{
return date("Y-m-d",strtotime("-3 days"));

}$date = date('Y-m-d',strtotime('2018-03-01')); //it is your date which you want to compareif($date >= last_three_day() && $date <= today())
{
echo "yes";
}

Обновить
На самом деле вам не хватало логики. Вы сравнили две неверные даты. Вы должны сделать разницу между датами ввода пользователя, тогда вы сможете получить истинные результаты

<?php

if(isset($_POST['submit']))
{
$leaveFrom = date_create($_POST['leaveFrom']);
$leaveTo =  date_create($_POST['leaveTo']);
$dayDifference = date_diff($leaveFrom, $leaveTo)->format('%d');
$yearDifference = date_diff($leaveFrom, $leaveTo)->format('%y');
$monthDifference = date_diff($leaveFrom, $leaveTo)->format('%m');

/*These conditions will check the year and month differences too.*/
if($yearDifference==0)
{
if($monthDifference==0)
{
if($dayDifference<=4 && $dayDifference>0)
{
echo "Eligible";
}
else//else for day difference
{
echo "Not Eligible";
}
}
else
{
echo "Not Eligible";

}//else for month difference
}
else
{
echo "Not Eligible";

}//else for year difference
}

?>
<html>
<body>
<form action="" method="post">
<label for="leaveFrom">Leave From</label> <input type="date" name="leaveFrom"><br>
<label for="leaveTo">Leave To</label><input type="date" name="leaveTo"><br>

<br>    <input type="submit" name="submit">
</form>
</body>
</html>
2

Другие решения

Нашел решение. Большое спасибо Zain Farooq!

if(isset($_POST['btnRequest']))
{$leaveReason = $_POST['leaveReason'];
$leaveFileDate = $_POST['leaveFileDate'];
$leaveFrom = date_create($_POST['leaveFrom']);
$leaveTo =  date_create($_POST['leaveTo']);$dayDifference = date_diff($leaveFrom, $leaveTo)->format('%d');

if($dayDifference<=4)
{
$sql_insert = "INSERT INTO leaves (leaveReason, leaveFileDate, leaveFrom, leaveTo, leaveStatus, accountID, ltypeID)
VALUES(?, ?, ?, ?, ?, ?, ?)";
$params_insert = array($leaveReason, $leaveFileDate, $leaveFrom, $leaveTo, 'Pending for Approval', $accID, $ltypeID);$stmt_insert = sqlsrv_query($con, $sql_insert, $params_insert);

if($stmt_insert === false) {
#die(print_r(sqlsrv_errors(), true));
$dispMsg = $errorMsg;
}
else
{
$dispMsg = $successMsg;
}
}
else
{
$dispMsg = $dateerrorMsg;
}
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector