亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我的日期拾取器系統有問題(禁用日期)

我的日期拾取器系統有問題(禁用日期)

PHP
呼喚遠方 2022-08-19 15:33:42
我有一個用于我的預訂系統的日期選擇器,但它不適用于1示例。我有2個日期供員工填寫。如果我保存入住日期(月/日/年)01/01/2020,而退房日期為01/05/2020。然后,如果我想編輯預訂數據。我無法將退房日期更改為01/03/2020,因為1到5現在是禁用日期。我的問題是,如果有人知道如何處理這個問題。也許我需要為另一個系統編寫代碼來處理禁用的日期。但我想知道是否有人知道如何只用棗椰棗機做到這一點。我更喜歡這樣。我使用flatPickr作為Jquery的日期拾取者。我使用PHP從數據庫中獲取禁用的日期,并將其作為數組加載到日期選取器的禁用日期函數中。讓我知道你的想法是什么,如果你有提示和提示,你也可以回答我。感謝您抽出寶貴時間接受采訪代碼<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>Datepicker code jquery.來自數據庫和代碼的日期,在2個日期之間取一整天,并放置在具有可變$strBlockA disable[]函數中 $('#from1').flatpickr({     onChange: function(selectedDates, dateStr, instance) {       endPicker.set('minDate', selectedDates[0]);     },     allowInput: true,     dateFormat: "m/d/yy",     disable: [<?php echo implode(',',array_unique(explode(',', $strBlockA))); ?>],   });   endPicker = flatpickr("#to1", {   allowInput: true,   dateFormat: "m/d/yy",   disable: [<?php echo implode(',',array_unique(explode(',', $strBlockA))); ?>],   });從數據庫中獲取日期并獲取中間所有日期的代碼  //Camping Block A     $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)'";     $statement = $connect->prepare($sql);     $success = $statement->execute();
查看完整描述

3 回答

?
慕桂英4014372

TA貢獻1871條經驗 獲得超13個贊

這就是我要做的。我會嘗試解釋,因為我不知道你的完整數據庫設置。


您在此處的查詢是從系統中選取所有保留的日期。


$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)'";

我假設每行也有一個ID?


您應從此查詢中排除當前預訂(正在編輯的預訂)的 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";

希望這有幫助。


查看完整回答
反對 回復 2022-08-19
?
一只名叫tom的貓

TA貢獻1906條經驗 獲得超3個贊

對于第一個問題,您只需在查詢中添加另一個條件,以便從搜索中排除當前預訂,如下所示:where


 ... and reservationID != {$currentReservationID}

然后,您只會查看其他預訂,這是您在編輯一個預訂時所需要的。


對于后一個問題,您當前是否有兩個日期字段,一個簽入和一個簽出日期?如果是這樣,解決此問題的最簡單方法是使用范圍日歷功能來使用一個日期范圍選取器,而不是兩個日期選取器,這似乎不允許在范圍內禁用日期。


如果你這樣做,你唯一需要改變的就是,而不是大意如下:


$startDate = $_POST['startDate'];

$endDate = $_POST['endDate'];

你會使用:


$dateRange = $_POST['dateRange'];

$dateRange = explode(" to ", $dateRange);

$startDate = $dateRange[0];

$endDate = $dateRange[1];

但是,如果由于某種原因這對您不起作用,我相信下一個最佳選擇是在插入其保留之前執行簡單的SQL查詢,以驗證日期是否可用。


您可以在插入查詢之前執行類似操作:


select reservationID from campinginformation

where

  dateFrom between "{$startingDate}" and "{$endingDate}"

  or dateTo between "{$startingDate}" and "{$endingDate}"

如果這返回任何結果,請不要插入其保留項,并提供失敗消息。


查看完整回答
反對 回復 2022-08-19
?
BIG陽

TA貢獻1859條經驗 獲得超6個贊

我不了解PHP,但希望這個答案能給你一些提示/確切的答案。您的查詢會根據注冊ID為您提供先前保存的入住和退房日期,一旦您知道入住和退房日期,您就可以通過以下代碼實現您想要的。希望它有幫助..通過使用下面的代碼,以前選擇的入住和退房日期被禁用以選擇。

例如,如果您選擇01/02/2020到01/05/2020,那么這些持續時間將被阻止進行預訂。但您可以選擇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/[email protected]/dist/flatpickr.js"></script>

<link href="https://unpkg.com/[email protected]/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,那么您只能在日期之間進行選擇


$('#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/[email protected]/dist/flatpickr.js"></script>

<link href="https://unpkg.com/[email protected]/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>


當您在平板吸盤中使用范圍模式時,它不允許您選擇超出塊日期。正如我在最后一個代碼中添加的那樣,您可以比較范圍日期選擇器

查看完整回答
反對 回復 2022-08-19
  • 3 回答
  • 0 關注
  • 145 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號