我正在構建預訂系統,並選擇使用時間戳將預訂存儲在我的mysql數據庫中。然而,用戶可以預約2或3個插槽,例如:根據時間戳按日期和時間分組條目
9:00 - 9:30
9:30 - 10:00
10:00 - 10:30
或者他們可以只預訂單個插槽。
我想告訴用戶,但其中通過組的時限作出的預訂,因此,例如在它上面顯示的時間應顯示9:00 - 10:30,而不是列出3項。
每個預訂存儲有bookingFrom和bookingUntil作爲timetamp。我已經設法讓它工作2次預訂(例如9:00-9:30和9:30-10:00只顯示爲9:00-10:00),但如果有中間入口,我是在如何使這項工作中掙扎。
任何想法?我使用PHP/MySQL的
表模式
bookingID,用戶ID,bookingFrom(INT - UNIX時間戳),bookingUntil(INT - UNIX時間戳)
CREATE TABLE IF NOT EXISTS `dma_bookings` (
`bookingID` int(11) NOT NULL AUTO_INCREMENT,
`userID` int(11) NOT NULL,
`bookingFrom` int(11) NOT NULL,
`bookingUntil` int(11) NOT NULL,
`roomID` int(11) NOT NULL,
PRIMARY KEY (`bookingID`),
KEY `userID` (`userID`,`bookingFrom`,`bookingUntil`),
KEY `roomID` (`roomID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=98 ;
--
-- Dumping data for table `dma_bookings`
--
INSERT INTO `dma_bookings` (`bookingID`, `userID`, `bookingFrom`, `bookingUntil`, `roomID`) VALUES
(95, 1, 1317362400, 1317364199, 1),
(96, 1, 1317364200, 1317365999, 1),
(97, 1, 1317366000, 1317367799, 1);
到目前爲止的代碼(道歉很凌亂!):
$bookingArray = $data['bookingInfo'];
$bookingCleanArray = array();
$reversedArray = array_reverse($data['bookingInfo']);
$currentItemIndex=0;
$nextItemIndex=1;
foreach($reversedArray as $booking){
echo "<hr>BookingID: ".$booking['bookingID']."<br/><br/>";
$bookingFromMinusOne=$booking['bookingFrom']-1;
if($bookingFromMinusOne==$data['bookingInfo'][$nextItemIndex]['bookingUntil']){
//The current booking is part of a multiple booking range
$bookingArray[$nextItemIndex]['bookingUntil']=$booking['bookingUntil'];
unset($bookingArray[$currentItemIndex]);
}else{
echo "Single booking<br/>";
}
$currentItemIndex++;
$nextItemIndex++;
}
把表模式和數據的一些想法和你需要從查詢中得到什麼結果。 – rahularyansharma
更新了最初的帖子,謝謝! – Amo