我打算用php学习一个小的webapp。我面临一个有关要执行的sql查询的问题。基本上我必须根据日期和时间来管理预订。我用一个type=date和一个type=time的形式将这两件事分开。
日期是“数据”。
时间是“奥拉里奥·伊日尼奥”。
这是我的表格:
Data: <br><input type="date" name="data" ><br>
Orario Inizio: <br><input type="time" name="orario_inizio" min="09:30:00" max="16:30:00"><br>
Orario Fine: <br><input type="time" name="orario_fine" min="10:00:00" max="18:30:00"><br>
为了在数据库中输入预订,我们必须在“orarioèu inizio”中留出两个小时的空间,即在接下来的两个小时内没有其他预订。
输入.php
// Richiedente
$nominativo = $_POST['nominativo'];
$email = $_POST['email'];
$oggetto = $_POST['oggetto'];
$data = $_POST['data'];
$orario_inizio = $_POST['orario_inizio'];
$orario_fine = $_POST['orario_fine'];
//inserting data order
$query1 = "INSERT INTO Prenotazione (nominativo,email,data,orario_inizio,orario_fine,oggetto,nominativoi,emaili,nominativoe,emaile) VALUES ('$nominativo','$email','$data','$orario_inizio','$orario_fine','$oggetto','$nominativoi','$emaili','$nominativoe','$emaile')"; $result1 = mysqli_query($conn, $query1 );
$result1 = mysqli_query($conn, $query1 );
?>
我不能理解的是如何开发一个查询,允许我考虑用户选择的日期,即两小时内没有预订。让我用一个例子来解释:user1想要预订每天9月24日上午10:30的房间。我必须确保12:30之前没有预订。如果没有其他预订,那么如果我发送通知,我想输入此预订。
我已经做了第二部分,插入数据库,但是我不知道如何做第一次检查。
$query1 = "INSERT INTO Prenotazione (nominativo,email,data,orario_inizio,orario_fine,oggetto,nominativoi,emaili,nominativoe,emaile) VALUES ('$nominativo','$email','$data','$orario_inizio','$orario_fine','$oggetto','$nominativoi','$emaili','$nominativoe','$emaile')";
我已经读到一种可能性应该是使用subdate
你能帮助我吗?谢谢您
更新。
表prenotazione
数据库
2条答案
按热度按时间v6ylcynt1#
因为您没有提供表架构,所以我必须使用占位符列名等。
如前面的注解所述,您可以使用mysql函数
BETWEEN
看看是否有东西在给定的时间之间(也适用于日期)。它的作用是返回一个布尔值。如果为真,则为1;如果为假,则为0。假设您的表有一个日期行,以便查看特定日期的预订,您可以编写以下示例:
你可以调整逻辑,让它更符合你的喜好。例如,
CURDATE()
只需要当前日期,但也许您有一个特定的预订日期,您可以使用?这个sql基本上是根据时间在上午10:30到12:30之间,并且日期是今天(可以是给定的预订日期)来计算您选择的id(用户id或诸如此类)。
现在,如果这个sql找到任何记录,它将被放入计数中。所以它的值不是0就是更高。如果计数大于0,则表示我们正忙,或者应用了逻辑,这意味着您无法预订该天/时间段,因此我们将抛出一个错误。但是,如果计数不大于0,则继续
INSERT
因为那时一切都会好起来的。b09cbbtk2#
考虑以下几点: