我有电视节目表,在这张表中有列,一个用于开始时间,一个用于结束时间。如果你想插入电视节目,你不能同时放2个电视节目,就像在真正的电视节目,我可以帮你做到这一点。感谢。
表格tvshows有列:tvshow_id,名称,描述,startime,整理时间。 我想通过表单插入信息,但如果已经有电视节目重叠另一个电视节目,你不能在数据库中插入,你需要改变时间。
我尝试解决这个问题:
$sql = "SELECT ...";
$result = mysqli_query ($link, $sql);
if(mysqli_num_rows($result) > 0) {
echo "Change datetime";
} else {
$sql = "INSERT ...";
}
答案 0 :(得分:0)
首先:最好在你的桌子上放Priority
,它可以帮助你订购电视节目。您可以使用此字段轻松控制重叠。
假设你有:
tvshows表
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 : 所以你应该检查这些条款:
newStarttime
不应 任何记录的范围。 NOT(newStarttime>=t.strattime AND newStarttime<t.finihingtime)
newFinishing
时间不应该在任何记录的范围内。 NOT(newFinishing >t.strattime AND newFinishing <=t.finihingtime)
NOT(newStarttime<t.strattime AND newFinishing >t.finihingtime)