3 回答

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超13個(gè)贊
這就是我要做的。我會(huì)嘗試解釋,因?yàn)槲也恢滥愕耐暾麛?shù)據(jù)庫設(shè)置。
您在此處的查詢是從系統(tǒng)中選取所有保留的日期。
$sql = "SELECT dateFrom,dateTo from campinginformation WHERE dateFrom IS NOT NULL AND dateTo IS NOT NULL AND dateFrom != '' AND dateTo != '' AND chooseCamping = 'Caravan of camper (kleine plaats)'";
我假設(shè)每行也有一個(gè)ID?
您應(yīng)從此查詢中排除當(dāng)前預(yù)訂(正在編輯的預(yù)訂)的 ID,這將釋放可用的日期。
所以像這樣:
$thisReservation = 0; //get the reservation ID of the one being edited
$sql = "SELECT dateFrom,dateTo from campinginformation WHERE dateFrom IS NOT NULL AND dateTo IS NOT NULL AND dateFrom != '' AND dateTo != '' AND chooseCamping = 'Caravan of camper (kleine plaats)' AND ReservationID !== $thisReservation";
希望這有幫助。

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個(gè)贊
對(duì)于第一個(gè)問題,您只需在查詢中添加另一個(gè)條件,以便從搜索中排除當(dāng)前預(yù)訂,如下所示:where
... and reservationID != {$currentReservationID}
然后,您只會(huì)查看其他預(yù)訂,這是您在編輯一個(gè)預(yù)訂時(shí)所需要的。
對(duì)于后一個(gè)問題,您當(dāng)前是否有兩個(gè)日期字段,一個(gè)簽入和一個(gè)簽出日期?如果是這樣,解決此問題的最簡(jiǎn)單方法是使用范圍日歷功能來使用一個(gè)日期范圍選取器,而不是兩個(gè)日期選取器,這似乎不允許在范圍內(nèi)禁用日期。
如果你這樣做,你唯一需要改變的就是,而不是大意如下:
$startDate = $_POST['startDate'];
$endDate = $_POST['endDate'];
你會(huì)使用:
$dateRange = $_POST['dateRange'];
$dateRange = explode(" to ", $dateRange);
$startDate = $dateRange[0];
$endDate = $dateRange[1];
但是,如果由于某種原因這對(duì)您不起作用,我相信下一個(gè)最佳選擇是在插入其保留之前執(zhí)行簡(jiǎn)單的SQL查詢,以驗(yàn)證日期是否可用。
您可以在插入查詢之前執(zhí)行類似操作:
select reservationID from campinginformation
where
dateFrom between "{$startingDate}" and "{$endingDate}"
or dateTo between "{$startingDate}" and "{$endingDate}"
如果這返回任何結(jié)果,請(qǐng)不要插入其保留項(xiàng),并提供失敗消息。

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊
我不了解PHP,但希望這個(gè)答案能給你一些提示/確切的答案。您的查詢會(huì)根據(jù)注冊(cè)ID為您提供先前保存的入住和退房日期,一旦您知道入住和退房日期,您就可以通過以下代碼實(shí)現(xiàn)您想要的。希望它有幫助..通過使用下面的代碼,以前選擇的入住和退房日期被禁用以選擇。
例如,如果您選擇01/02/2020到01/05/2020,那么這些持續(xù)時(shí)間將被阻止進(jìn)行預(yù)訂。但您可以選擇01 / 01 / 2020到01 / 06 / 2020。
$('#from1').flatpickr({
allowInput: true,
dateFormat: "m/d/yy",
disable: [
{
from: "01/05/2020",
to: "01/08/2020"
}
], //your fetched checkin date
});
endPicker = flatpickr("#to1", {
allowInput: true,
dateFormat: "m/d/yy",
disable: [
{
from: "01/05/2020",
to: "01/08/2020"
}
], //your fetched checkin date
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://unpkg.com/flatpickr@4.6.3/dist/flatpickr.js"></script>
<link href="https://unpkg.com/flatpickr@4.6.3/dist/flatpickr.min.css" rel="stylesheet" />
<div class="form-group row">
<label for="date" class="col-4 col-form-label">Check in</label>
<div class="col-8">
<input id='from1' type='text' name='dateFrom1' data-date="" class='form-control datepickerChange' placeholder="Open date-picker" autocomplete="off" />
</div>
</div>
<div class="form-group row">
<label for="date" class="col-4 col-form-label">Check out</label>
<div class="col-8">
<input id='to1' type='text' name='dateTo1' data-date="" class='form-control datepickerChange' placeholder="Open date-picker" autocomplete="off" />
</div>
</div>
在下面,只允許選擇以前選擇的日期。例如,如果您選擇01 / 02 / 2020到01 / 05 / 2020,那么您只能在日期之間進(jìn)行選擇
$('#from1').flatpickr({
onChange: function(selectedDates, dateStr, instance) {
endPicker.set('minDate', new Date("01/05/2020"));
},
minDate: new Date("01/05/2020"), //your fetched checkin date
allowInput: true,
dateFormat: "m/d/yy",
maxDate: new Date("01/08/2020"), //your fetched checkout date
});
endPicker = flatpickr("#to1", {
allowInput: true,
dateFormat: "m/d/yy",
minDate: new Date("01/05/2020"), //your fetched checkin date (may be same /may not) also assume checkin date is 01/04/2020
maxDate: new Date("01/08/2020"), //your fetched checkout date
});
flatpickr("#to2", {
allowInput: true,
mode: 'range',
dateFormat: "m/d/yy",
disable: [{
from: "01/05/2020",
to: "01/08/2020"
}],
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://unpkg.com/flatpickr@4.6.3/dist/flatpickr.js"></script>
<link href="https://unpkg.com/flatpickr@4.6.3/dist/flatpickr.min.css" rel="stylesheet" />
<div class="form-group row">
<label for="date" class="col-4 col-form-label">Check in</label>
<div class="col-8">
<input id='from1' type='text' name='dateFrom1' data-date="" class='form-control datepickerChange' placeholder="Open date-picker" autocomplete="off" />
</div>
</div>
<div class="form-group row">
<label for="date" class="col-4 col-form-label">Check out</label>
<div class="col-8">
<input id='to1' type='text' name='dateTo1' data-date="" class='form-control datepickerChange' placeholder="Open date-picker" autocomplete="off" />
</div>
<div class="form-group row">
<label for="date" class="col-4 col-form-label">Range mode check in Check in and Check out</label>
<div class="col-8">
<input id='to2' type='text' name='dateTo1' data-date="" class='form-control datepickerChange' placeholder="Open date-picker" autocomplete="off" />
</div>
</div>
當(dāng)您在平板吸盤中使用范圍模式時(shí),它不允許您選擇超出塊日期。正如我在最后一個(gè)代碼中添加的那樣,您可以比較范圍日期選擇器
- 3 回答
- 0 關(guān)注
- 142 瀏覽
添加回答
舉報(bào)