這裏有你需要完成這個任務的邏輯步驟:
步驟1獨立的開始時間和結束時間爲兩列。所以,你的表應該是這樣的:
time_id member_id entry_day time_in time_out
1 2 2016-01-19 2016-08-19 12:30:00 2016-08-18 03:00:00
你列的類型應該是:
`time_id`: `int`
`member_id`: `int`
`time_in`: `DATETIME`
`entry_day`: `DATE`
`time_out`: `DATETIME`
步驟2寫一些PHP執行,看起來像這樣在數據庫上查詢:
SELECT * FROM TimeEntryTable t
WHERE t.member_id = :memberId
AND :new_entry_time_in BETWEEN t.time_in AND t.time_out
OR :new_entry_time_out BETWEEN t.time_in AND t.time_out
您需要通過新記錄time_in
,time_out
,member_id
。我假設你正在使用PDO ......如果沒有,那麼你應該開始。
步驟3
檢查由該查詢返回的結果。
if (count($resultsArray) === 0) {
//Create the new record,
} else {
//If you're here than there was a record within that time range and you should not create it.
}
爲什麼你還沒有使用包括日期的'start time'和'end time'兩列?使用查詢來檢查重複和交叉插槽會很容易。 –
確實如此,但無論如何,這並不難 – Strawberry
您可以在這3列上添加唯一約束條件 – Saurabh