第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

數(shù)據(jù)庫(kù)中的時(shí)間段被預(yù)訂 php 代碼復(fù)制而不是跳過(guò)

數(shù)據(jù)庫(kù)中的時(shí)間段被預(yù)訂 php 代碼復(fù)制而不是跳過(guò)

PHP
慕田峪4524236 2023-04-28 17:43:33
我正在使用 Fullcalendar 4 創(chuàng)建一個(gè)預(yù)訂系統(tǒng),供客戶預(yù)訂設(shè)備維修的標(biāo)注時(shí)段。到目前為止,在此處用戶的幫助下,我已經(jīng)設(shè)法讓日歷對(duì)象將預(yù)訂的時(shí)段填充到日歷中,而且我?guī)缀跻彩褂脝为?dú)的 eventSouce 并在 php 上將其添加到免費(fèi)的未預(yù)訂時(shí)段中服務(wù)器端一天中哪些時(shí)段被占用并跳過(guò)它們。$cDate是 Fullcalendar 發(fā)送的請(qǐng)求的 DateTime 轉(zhuǎn)換開(kāi)始日期。$eDate是 Fullcalendar 發(fā)送的請(qǐng)求的 DateTime 轉(zhuǎn)換結(jié)束日期。$daysInRange是一個(gè) datediff 變量,我在頁(yè)面上進(jìn)一步計(jì)算它以查看 $cDate 和 $eDate 之間有多少天。典型的 url 如下來(lái)自 ajax 請(qǐng)求:getBookings.php?start=2020-06-05T00%3A00%3A00&end=2020-06-05T00%3A00%3A00&timeZone=Europe%2FLondon$bookingStart = new DateTime( $_GET[ 'start' ] );$bookingEnd = new DateTime( $_GET[ 'end' ] );//Get The Start Date/Time seperately and End Date/Time Seperately.$startdate = date_format( $bookingStart, 'Y-m-d' );$starttime = date_format( $bookingStart, 'H:i:s' );$enddate = date_format( $bookingEnd, 'Y-m-d' );$endtime = date_format( $bookingEnd, 'H:i:s' );上面的代碼可以工作,但是例如,如果 2020-06-05 在 09:00:00 - 11:00:00 有一個(gè)時(shí)段,范圍是 2020-06-01 到 2020-06-08 那么我在 5 號(hào)上午 9 點(diǎn)到上午 11 點(diǎn)預(yù)訂了紅色時(shí)段,綠色時(shí)段也是免費(fèi)時(shí)段。我不知道為什么我得到這個(gè)..
查看完整描述

1 回答

?
倚天杖

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊

我接近它的方式是:

  1. 在 1 天內(nèi)創(chuàng)建一系列可用插槽。

  2. 在請(qǐng)求的日期范圍內(nèi)創(chuàng)建一個(gè)新的可用時(shí)段數(shù)組,創(chuàng)建一個(gè)包含字段date、start、end、isbooked的新數(shù)組。

    現(xiàn)在我有一個(gè)數(shù)組,其中包含整個(gè)請(qǐng)求日期范圍的槽時(shí)間和日期,我面臨的最后一個(gè)問(wèn)題是如何在 foreach 循環(huán)中完成它并更改原始值?我偶然發(fā)現(xiàn)了 StackOverflow 上的另一個(gè)答案,它為我回答了這個(gè)問(wèn)題,因此,我能夠在最終數(shù)組上執(zhí)行最終的 foreach 循環(huán),并遍歷每個(gè)數(shù)據(jù)庫(kù)結(jié)果以檢查它是否與 foreach 顯示的時(shí)間段上的日期匹配然后將isbooked標(biāo)志設(shè)置為 true。

最后!我有一組工作代碼可以創(chuàng)建我需要的 JSON 返回值。沒(méi)有重復(fù),只有免費(fèi)插槽和預(yù)訂插槽很好地坐在一起。

我的最終代碼如下:

? ? for ( $i = 0; $i <= $daysInRange; $i++ ) {


? ? //for the current date we need to go through each slot.?

? ? foreach ( $freeSlots as $slot ) {


? ? ? ? $slotStart = new DateTime( $slot[ 'start' ] );

? ? ? ? $slotEnd = new DateTime( $slot[ 'end' ] );




? ? ? ? ? ? ? ? $aSlot[ 'date' ] = $cDate->format( "Y-m-d" );

? ? ? ? ? ? ? ? $aSlot[ 'start' ] = $slotStart->format( "H:i:s" );

? ? ? ? ? ? ? ? $aSlot[ 'end' ] = $slotEnd->format( "H:i:s" );

? ? ? ? ? ? ? ? $aSlot[ 'isbooked' ] = false;

? ? ? ? ? ? ? ? $allSlots[] = $aSlot;? ?



? ? }




? ? //Now add 1 day to the cDate and then check if its greater than the eDate

? ? $cDate->modify( '+1 Day' );

? ? if ( $cDate > $eDate ) {

? ? ? ? break;

? ? }


}

//var_export($allSlots);

#check new array against database and mark booked slots?

foreach($allSlots as &$slot){


? ? foreach($bookingResult as $booking) {


? ? ? ? if($booking['bookingdate'] == $slot['date'] && $booking['bookingstarttime'] == $slot['start'] && $booking['bookingendtime'] == $slot['end']){

? ? ? ? ? ? $slot['isbooked'] = true;

? ? ? ? }


? ? }


}

//Now booked slots are marked we can now create the JSON.

foreach ( $allSlots as $slot ) {


? ? $slotStart = new DateTime( $slot[ 'start' ] );

? ? $slotEnd = new DateTime( $slot[ 'end' ] );

? ? $slotDate = new DateTime( $slot[ 'date' ] );



? ? if ( $slot[ 'isbooked' ] == false ) {

? ? ? ? $bookingsAsJSON[ 'title' ] = 'Unbooked Timeslot';

? ? ? ? $bookingsAsJSON[ 'start' ] = $slotDate->format("Y-m-d"). ' ' . $slotStart->format( "H:i:s" );

? ? ? ? $bookingsAsJSON[ 'end' ] = $slotDate->format( "Y-m-d" ) . ' ' . $slotEnd->format( "H:i:s" );

? ? ? ? $bookingsAsJSON[ 'extendedProps' ][ 'bookingActualDate' ] = $slotDate->format( "Y-m-d" );

? ? ? ? $bookingsAsJSON[ 'extendedProps' ][ 'bookingActualStartTime' ] = $slotStart->format( "H:i:s" );

? ? ? ? $bookingsAsJSON[ 'extendedProps' ][ 'bookingActualEndTime' ] = $slotEnd->format( "H:i:s" );

? ? ? ? $calendarEvents[] = $bookingsAsJSON;

? ? }

}

日歷上的輸出如下所示:

http://img1.sycdn.imooc.com/644b95710001961b06530367.jpg

查看完整回答
反對(duì) 回復(fù) 2023-04-28
  • 1 回答
  • 0 關(guān)注
  • 135 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)