【问题标题】:Making Class Booking system PHP制作课程预订系统PHP
【发布时间】:2011-08-07 21:52:46
【问题描述】:

我的 php 脚本需要帮助。我正在编写一个脚本,允许我的用户选择上课时间。时间列表锁定在 24 小时网格上,这意味着课程只能每小时进行一次。

此脚本的目标是向用户显示一个包含可用时间的简单表单。

一天有 24 次可能一个房间。 *我有三个房间。*

我知道稍后如何制作表格,我不明白如果有三个房间,如何显示可用时间。

这是我目前得到的:

<?php
include 'db-connect.php';
if (isset($_GET['month']) && isset($_GET['day']) && isset($_GET['year'])) {

    $month = $_GET['month'];
    $day = $_GET['day'];
    $year = $_GET['year'];

    //string together date
    $date = $month."/".$day."/".$year;

    //return classes on this date
    $sql = mysql_query("SELECT start_time, server FROM classes WHERE date = '$date'");

    if (mysql_num_rows($sql)<=0) {

        echo "show all the times.";

    }else {

        $timelist = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24);
        $servers = array(1,2,3);

        while($query = mysql_fetch_array($sql)) {

                unset($timelist[$query['start_time'] - 1]);

        }
    }
}
?>

数据库示例:

+---------------------------------------------------------------------------------------+
| classID | trainerID | type | date      | start_time | duration | server | define      |
+---------------------------------------------------------------------------------------+
| 1       | 1         | 12   | 08/7/2011 | 9          | 60       | 1      | dummy class |
+---------------------------------------------------------------------------------------+

【问题讨论】:

  • 我觉得这个问题我太傻了。但我可以帮助你一点.. $timelist = range(1, 24);为您的长阵列提供一种更简洁的方式。也许你可以提供一个 db 表的例子?
  • 好吧,我的 db 表名为 classes,我的列是:classID(自动增量)、日期(看起来像 00/00/0000)、start_time(1 - 24)、持续时间(可能是 15 - 60 分钟)和服务器(1、2 或 3)。
  • sql-info.de/mysql/examples/CREATE-TABLE-examples.html 并将其添加到您的问题中。
  • 基本上,您可以在此处看到这些示例。如何显示数据库的结构。如果处理 mysql db 相关问题,那么正确的 db 示例对于更快的响应是必要的:)
  • 好的,现在看起来好多了。但是,因为我很笨。然后我需要让我的小大脑更清楚这一点。表中的内容 - 可用时间、上课时间或上课时间是否已锁定?如我所见,您将删除数组中的时间。稍后显示只有可用时间的数组。

标签: php database validation time comparison


【解决方案1】:

您可以只存储每次找到的数组数量,而不是您当前的策略,例如:

//define time list
$timelist = array_fill(1, 24, 0);

while($query1 = mysql_fetch_array($sql1)) {

    $timelist[$query1['start_time']]++;

}

while($query2 = mysql_fetch_array($sql2)) {

    $timelist[$query2['start_time']]++;

}

while($query3 = mysql_fetch_array($sql3)) {

    $timelist[$query3['start_time']]++;

}

$timelist = array_keys(array_filter($timelist, 'equals3'));

function equals3($x){
    return $x == 3;
}

现在 $timelist 是在所有三个查询中找到的时间数组。如果您想要一组至少从一个查询中丢失的时间,请使用此而不是最后几行:

$timelist = array_keys(array_filter($timelist, 'lessThan3'));

function lessThan3($x){
    return $x < 3;
}

【讨论】:

    猜你喜欢
    • 2020-02-06
    • 1970-01-01
    • 2021-05-24
    • 1970-01-01
    • 1970-01-01
    • 2022-11-24
    • 2020-10-03
    • 2012-05-05
    • 2018-08-18
    相关资源
    最近更新 更多