Вот пример метода, который вы можете рассмотреть.
$(function() {
function checkDate(rId, dObj) {
var dStr = $.datepicker.formatDate("yy-mm-dd", dObj);
$.get("testcalendar.php", {
hid: "encinas",
room_id: rId,
date: dStr
}, function(result) {
if (result) {
return result;
} else {
return true;
}
});
return true;
}
$(".room-cal").datepicker({
dateFormat: 'yy-mm-dd',
numberOfMonths: 1,
stepMonths: 1,
showOtherMonths: true,
showButtonPanel: true,
minDate: "+1d",
maxDate: "+300d",
beforeShowDay: function(dt) {
var r = $(this).parent().parent();
var a = checkDate(r.data("room-id"), dt);
return [a, (a ? "available" : "booked")];
}
});
$(".room-avail").on("click", function() {
var cal = $(".room-cal", this);
cal.datepicker("show");
});
});
.room {
margin: 3px;
padding: .75em;
border: 2px solid #ccc;
border-radius: 3px;
}
.room-title {
font-weight: bold;
font-size: 18pt;
}
.room-avail {
background: #cfcfcf;
float: right;
display: inline-block;
border: 1px solid #999;
border-radius: 3px;
padding: .4em .2em;
margin-right: 20px;
cursor: pointer;
}
.room-cal {
display: none;
}
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<div class="room" data-room-id="1133">
<div class="room-avail" title="Click to see Availiblity"><input type="text" class="room-cal" /><span class="ui-icon ui-icon-calendar"></span> Date Availible</div>
<div class="room-title">2 Twins - 1133</div>
<div class="room-desc">Ocean View</div>
</div>
<div class="room" data-room-id="1134">
<div class="room-avail" title="Click to see Availiblity"><span class="ui-icon ui-icon-calendar"></span> Date Availible</div>
<div class="room-title">2 Twins - 1134</div>
<div class="room-desc">First Floor</div>
</div>
<div class="room" data-room-id="1135">
<div class="room-avail" title="Click to see Availiblity"><span class="ui-icon ui-icon-calendar"></span> Date Availible</div>
<div class="room-title">2 Twins - 1135</div>
<div class="room-desc">Ocean View</div>
</div>
<div class="room" data-room-id="1136">
<div class="room-avail" title="Click to see Availiblity"><span class="ui-icon ui-icon-calendar"></span> Date Availible</div>
<div class="room-title">2 Twins - 1136</div>
<div class="room-desc">First Floor</div>
</div>
В PHP у вас может быть что-то вроде:
<?php
// check-date.php
require_once('XXXXXXXXXXXXXXXX');
mysqli_select_db(XXXXXXXXXXXXXXX);
mysqli_set_charset(XXXXXXXXXXXXX);
if (isset($_GET['hid'])) {
$hid=$_GET['hid'];
}
if (isset($_GET['room_id'])) {
$room_id=$_GET['room_id'];
}
if (isset($_GET['date'])) {
$date=$_GET['month'];
}
$sql = "SELECT avail FROM $hid WHERE room = $room_id AND date = $date LIMIT 1;";
$result = mysqli_query($conn, $sql);
$avail = (mysqli_num_rows($result) ? false : true);
echo $avail;
?>
Это настраивает каждый указатель даты в клиенте и когда beforeShowDay
выполняется, каждый день (35 дней) проверяется доступность с помощью команды GET для PHP-скрипта.PHP Script вернет true
или false
, если комната будет доступна в этот день.DatePicker покажет календарь с завтрашнего дня.Можно выбрать только доступные дни.
Надеюсь, это поможет.