我有电视节目表,此表中有几列,一列是开始时间,一列是结束时间。我需要做的是,如果您想插入电视节目,而不能像真实电视中那样同时放2个电视节目,请您能帮我制作一个。谢谢。
表电视节目具有以下列:tvshow_id,名称,描述,上映时间,结束时间。
我想通过表单插入信息,但是如果已经有电视节目与另一个电视节目重叠,则无法在数据库中插入此信息,则需要更改时间。
我尝试解决此问题的方法:
$sql = "SELECT ...";
$result = mysqli_query ($link, $sql);
if(mysqli_num_rows($result) > 0) {
echo "Change datetime";
} else {
$sql = "INSERT ...";
}
最佳答案
首先:最好在桌子上放Priority
,这样可以帮助您更好地订购电视节目。您可以使用此字段轻松控制重叠。
假设您有:
电视节目表
tvshow_id, name, description, startime, finishingtime
并且您插入的所有
tvshows
记录都不会重叠。您的新记录(带有
newStarttime
和newFinishingtime
)不应与任何现有记录重叠。解决方案1:
您的新记录应该是现有记录范围的外部范围。
Select * from tvshows t
Where (newStarttime>=t.finishingtime AND newFinishingtime>t.finishingtime) OR
(newFinishingtime<=t.starttime AND newStarttime<t.starttime )
解决方案2:
因此,您应该检查以下子句:
状态1:
newStarttime
不应在任何记录的范围内。NOT(newStarttime>=t.strattime AND newStarttime<t.finihingtime)
星期六2:
newFinishing
时间不应在任何记录的范围内。NOT(newFinishing >t.strattime AND newFinishing <=t.finihingtime)
状态3:您的新范围不应与现有范围重叠
NOT(newStarttime<t.strattime AND newFinishing >t.finihingtime)