我有电视节目表,此表中有几列,一列是开始时间,一列是结束时间。我需要做的是,如果您想插入电视节目,而不能像真实电视中那样同时放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记录都不会重叠。

您的新记录(带有newStarttimenewFinishingtime)不应与任何现有记录重叠。

解决方案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)

10-07 17:59