Относительно выбора даты в php / javascript

У меня есть Javascript JQuery Date Picker, который в данный момент позволяет вам выбирать только дни на основе дней в базе данных, а также позволяет вам выбрать текущий день (если он не в базе данных в качестве выходного дня). Выходные также отключены.

То, что я пытаюсь сделать сейчас, — это разрешить пользователю выбирать день из базы данных +1 только при выборе даты.

Я, очевидно, вытащил самую последнюю дату, введенную в мою базу данных, и добавил одну к ней, так что это дата, которую я только хочу быть доступной для выбора … Но что, если следующий день будет выходным из другого? Праздничные даты? каким образом я могу обойти это и на самом деле только отображая один? И есть условие на даты моего отпуска?

Мой javascript JQuery Дата выбора ATM:

 <script type="text/javascript">

//  Holiday Dates
var unavailableDates =
[<?php

while($date = mysqli_fetch_assoc($execute)) {

//  Populating javascript array with the dates from database
echo '"' . $date = date('Y-n-j', strtotime($date['holiday_date'])) . '"';

//  Adding a comma in array
if ( $i < $number) {
echo ',';
}
$i ++;
}
?>
];

//  Entered Dates
var unavailableEnteredDates =
[<?php

while($dateEntered = mysqli_fetch_assoc($executeQuery)) {
//  Populating javascript array with the dates from database
echo '"' . $dateEntered = date('Y-n-j', strtotime($dateEntered['totalsDate'])) . '"';

//  Adding a comma in array
if ( $y < $number2) {
echo ',';
}
$y ++;
}
?>
];

//  Concatenented array of 2 above
var allUnavailableDates = unavailableDates.concat(unavailableEnteredDates);

//  Sets the no weekends and specified holiday dates
function noWeekendsOrHolidays(date) {
var noWeekend = jQuery.datepicker.noWeekends(date);
return noWeekend[0] ? holidays(date) : noWeekend;
}

//  Gets the holidays
function holidays(date) {
dmy = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate();
if ($.inArray(dmy, allUnavailableDates) == -1) {
return [true, ""];
} else {
return [false, "", "Holiday Date"];
}

}

//  Setting up the Date Picker
$(function() {
$("#datepickerUser").datepicker({
dateFormat: 'yy-m-d',
beforeShowDay: noWeekendsOrHolidays,
maxDate: "+0d"});
$(function() { ("#testButton").datepicker("show") });

});

Мое решение я придумал:

          //    Adding one to the day so we can display this
$latestPlusOne = date('Y-n-j', strtotime( "$latestDate + 1 day" ));
$availableTakingDate;

//  This for loop will loop through the size of the array
//  Each time it finds the date inside the array it will plus 1 to the date
//  Otherwise, break out of the loop and the new date var will be an available one
for ($i = 0; $i <= count($dateArray); $i++) {
if (in_array($latestPlusOne, $dateArray)) {

$latestPlusOne = date('Y-n-j', strtotime( "$latestPlusOne + 1 day" ));
} else {
$availableTakingDate = $latestPlusOne;
break;
}
}
?><script type="text/javascript">

//  Date :: wanted available
var availableDate = <?php echo json_encode($availableTakingDate); ?>;

function displayDate(date) {
dmy = date.getFullYear() + "-" + (date.getMonth() +1) + "-" + date.getDate();

if (dmy == availableDate) {
return [true, ""];

} else {
return [false, ""];
}
}

//  Setting up the Date Picker
$(function() {
$("#datepickerUser").datepicker({
dateFormat: 'yy-m-d',
beforeShowDay: displayDate,
maxDate: "+0d"});
$(function() { ("#testButton").datepicker("show") });

});

0

Решение

Никто не сможет узнать о праздниках в вашей стране. Вы должны реализовать свою собственную логику программирования — определить праздники в вашей стране, хотя год и рассчитать на следующий день. В то время как следующий день находится в списке праздников, увеличьте дату до +1 дня.

1

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

Других решений пока нет …

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