gpt4 book ai didi

javascript - 在 PHP 和 Mysql 的 jquery 日期选择器中禁用给定范围内的日期

转载 作者:行者123 更新时间:2023-11-29 10:51:13 25 4
gpt4 key购买 nike

这是我的第一篇文章,如有错误请原谅

我是 JQUERY 和 AJAX 的新手,所以请让您的答案非常清楚

我查了很多资料,但没有结果我正在用 PHP MYSQLI 和 JQUERY 构建一个公寓预订系统,我在同一页面上有 2 个 jquery 日期选择器,一个除了入住日期,另一个除了结账日期,使用的 MYSQL 表称为 bookings,它具有以下列 -

ID、名字、电子邮件、入住日期、退房日期

假设 Mysql 表返回 2 行,第一行返回 check_in_date(2017-05-02) 和 check_out_date(2017-05-10)

第二次返回 check_in_date(2017-06-05) 和 check_out_date(2017-06-20)

如何在两个日期选择器上禁用这两个范围内的所有日期这是我想出来的

这是 HTML 表单的一部分

<div class="form-group">
<label for="check_in_date">Check In Date</label>
<input type="text" class="form-control" id="datepicker" placeholder="Check in Date">
</div>
<div class="form-group">
<label for="check_out_date">Check Out Date</label>
<input type="text" class="form-control" id="datepicker1" placeholder="Check Out Date">
</div>

这是 Javascript - 它不完整

$(function() {

function checkAvailability(){

}

$( "#datepicker" ).datepicker({
dateFormat : 'yy-mm-dd',
beforeShowDay: checkAvailability
}
});

$( "#datepicker1" ).datepicker({
dateFormat : 'yy-mm-dd',
beforeShowDay: checkAvailability

}
});

});

PHP文件availability.php如下

$result = mysqli_query("SELECT check_in_date, check_out_date FROM bookings");

while ($row = mysqli_fetch_assoc($result)){

$check_in_dates[] = $row['check_in_date'];

$check_out_dates[] = $row['check_out_date'];
}

提前致谢

最佳答案

我想出了解决办法

    <?php
//below function returns all the dates within a given range
function date_range($first, $last, $step = '+1 day', $output_format = 'Y-m-d' ) {//if it was simple y example y-m-d then it will show 17 instead of 2017

$dates = array();
$current = strtotime($first);
$last = strtotime($last);

while( $current <= $last ) {

$dates[] = date($output_format, $current);
$current = strtotime($step, $current);
}//end of while loop

return $dates;//returns a array
}//end of function
//select all the date ranges that exist in the database
$query = 'SELECT check_in, check_out FROM bookings';

$result = mysqli_query($db, $query);

$i = 0;
while ($row=mysqli_fetch_assoc($result)){
//output all the dates within the ranges in the database
$range[$i] = date_range($row['check_in'], $row['check_out']);//creates a associative array with numerical index values



$i++;


}

$individual_dates = array();

//converts the associative array into a regular array
foreach($range as $ranges){
foreach ($ranges as $many_ranges){
$individual_dates[] = $many_ranges;
}
}


$json_array = json_encode($individual_dates);

?>

这是 javascript

<script>
var dateToday = new Date(); //creating new date obj. used to disable dates before today used in minDate: dateToday
$(function() {

$( "#datepicker" ).datepicker({
minDate: dateToday,
dateFormat : 'yy-mm-dd',
beforeShowDay: checkAvailability

});

$( "#datepicker1" ).datepicker({
minDate: dateToday,
dateFormat : 'yy-mm-dd',
beforeShowDay: checkAvailability
});

})
/******************THE json array returned by php is used here*****/
var $disabledDates = <?php echo $json_array; ?>

function checkAvailability(mydate){
var $return=true;
var $returnclass ="available";
$checkdate = $.datepicker.formatDate('yy-mm-dd', mydate);
for(var i = 0; i < $disabledDates.length; i++)
{
if($disabledDates[i] == $checkdate)
{
$return = false;
$returnclass= "unavailable";
}
}
return [$return,$returnclass];
}

</script>

关于javascript - 在 PHP 和 Mysql 的 jquery 日期选择器中禁用给定范围内的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43696464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com