简体   繁体   English

预约系统插槽

[英]Appointment Booking System Slots

Im trying to make an appointment booking system, in which everything else works, EXCEPT the appointment time slots, in which if, for example, an appointment is set at 11.30am, and lasts an hour (12.30pm), no one can book or have an appointment within these times. 我试图建立一个约会预订系统,除了约会时段外,其他所有功能都可以正常工作,例如,如果约会设置为上午11.30,持续一个小时(下午12.30),则没有人可以预订或在这些时间内预约。 I have converted start and end times of the input to unix time, as well as converting the times already set in the database, but it is failing me. 我已经将输入的开始和结束时间转换为Unix时间,以及转换了数据库中已设置的时间,但这使我失败了。

I have tried comparing the end time in between the two times set by the user, and the end time of the user between the two times already in the database. 我尝试比较用户设置的两次之间的结束时间,以及数据库中已有的两次之间的用户结束时间。 My code is: 我的代码是:

 if ($length == "1 Hour"){
            $edittime = $time;
            $timeedit = strtotime($edittime)+3600;
            $endtime = date('h:i:s', strftime($timeedit));
        } elseif ($length == "1 Hour 30 Minutes") {
            $edittime = $time;
            $timeedit = strtotime($edittime)+5400;
            $endtime = date('h:i:s', strftime($timeedit));
        } elseif ($length == "2 Hour") {
            $edittime = $time;
            $timeedit = strtotime($edittime)+7200;
            $endtime = date('h:i:s', strftime($timeedit));
        } else {
            header("location:Cancel.php");
        }
        /*Comparison of the start and end times, as well as the user input time.*/
        $querysql = "SELECT Time FROM $tablename WHERE Time <= '$endtime' AND Date = '$date'";
        $queryresult = mysqli_query($connection, $querysql);
        /*Validate the query.*/
        if (! $queryresult) {
            echo ("Could not retrieve the sql data : " . mysqli_error($connection) . " " . mysqli_errno($connection));
        }

        /*Array to collect data from the sql query, to compare against the appointment times the user entered.*/
        $count = 0;
        $starttime = $time;
        $secondtime = strtotime($starttime);
        $existapp[$count] = mysqli_fetch_array($queryresult, MYSQLI_NUM);
        while ($existapp[$count] <> "") {
            $temp = $existapp[$count];
            $acquireddata = $temp[$count];
            $appsec = strtotime($acquireddata);
            if ($length == "1 Hour") {
                $existstart = $appsec;
                $existedit = $existstart + 3600;
                $existend = date('h:i:s', strftime($existedit));
            } elseif ($length == "1 Hour 30 Minutes") {
                $existstart = $appsec;
                $existedit = $existstart + 3600;
                $existend = date('h:i:s', strftime($existedit));
            } elseif ($length == "2 Hour") {
                $existstart = $appsec;
                $existedit = $existstart + 3600;
                $existend = date('h:i:s', strftime($existedit));
            }
            /*$timeedit = end time*/
            /*$secondtime = start time*/
            /*$existededit = exisiting appointment*/

            if ($timeedit <= $existedit and $timeedit >= $existstart) {
                 header("location:Cancel.php");
            }
            $count = $count + 1;
        }

If you need the whole file then just give me a shout. 如果您需要整个文件,请给我喊一声。

I've been searching to no end with this, and after checking the unix times, it should work! 我一直在寻找没有尽头的东西,并且在检查了Unix次之后,它应该可以工作了! But it doesnt! 但事实并非如此! ): ):

<?php
    /*Checks if user is logged in, else redirect to home.*/
    session_start();
    if(! $_SESSION['Username']) {
        header("location:Index.php");
    }
    /*Sets variables as the login to the database, as well as tables of interest.*/
    $servername = "";
    $username = "";
    $password = "";
    $dbname = "";
    $tablename = "appointmentinformation";
    $tablenamed = "clientinformation";

    /*Connect to the database server and the database.*/
    $connection = mysqli_connect("$servername", "$username", "$password", "$dbname") or die("Could not connect to the database");
    if (mysqli_connect_errno()) {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }
    /*Retrieve the username from the current session.*/
    $clientusername = $_SESSION['Username'];
    /*Retrieve the ClientID of interest from a table, with a parameter of the username. Limit the amount of results to one row (one result).*/
    $sql = "SELECT ClientID FROM $tablenamed WHERE Username = '$clientusername' LIMIT 1";
    /*Validate the query.*/
    $results = mysqli_query($connection, $sql);
    if (! $results) {
        echo ("Could not select the data : " . mysql_error());
    } else {
        $datarows = mysqli_fetch_row($results);
        $clientid = $datarows[0];
    }
    /*Retrieve user input.*/
    $date = $_POST["date"];
    $time = $_POST["time"];
    $length = $_POST["length"];

    /*Format date*/
    $date = str_replace('/', '-', $date);

    /*Protection from SQL injection attacks.*/
    $date = stripslashes($date);
    $time = stripslashes($time);
    $length = stripslashes($length);
    $date = mysqli_real_escape_string($connection, $date);
    $time = mysqli_real_escape_string($connection, $time);
    $length = mysqli_real_escape_string($connection, $length);

    if ($length == "1 Hour"){
        $edittime = $time;
        $timeedit = strtotime($edittime)+3600;
    } elseif ($length == "1 Hour 30 Minutes") {
        $edittime = $time;
        $timeedit = strtotime($edittime)+5400;
    } elseif ($length == "2 Hour") {
        $edittime = $time;
        $timeedit = strtotime($edittime)+7200;
    } else {
        header("location:Cancel.php");
    }
    /*Comparison of the start and end times, as well as the user input time.*/
    $querysql = "SELECT Time FROM $tablename WHERE Time <= '$endtime' AND Date = '$date'";
    $queryresult = mysqli_query($connection, $querysql);
    /*Validate the query.*/
    if (! $queryresult) {
        echo ("Could not retrieve the sql data : " . mysqli_error($connection) . " " . mysqli_errno($connection));
    }

    /*Array to collect data from the sql query, to compare against the appointment times the user entered.*/
    $count = 0;
    $starttime = $time;
    $secondtime = strtotime($starttime);
    $existapp[$count] = mysqli_fetch_array($queryresult, MYSQLI_NUM);
    while ($existapp[$count] <> "") {
        $temp = $existapp[$count];
        $acquireddata = $temp[$count];
        $appsec = strtotime($acquireddata);
        if ($length == "1 Hour") {
            $existstart = $appsec;
            $existedit = $existstart + 3600;
        } elseif ($length == "1 Hour 30 Minutes") {
            $existstart = $appsec;
            $existedit = $existstart + 3600;
        } elseif ($length == "2 Hour") {
            $existstart = $appsec;
            $existedit = $existstart + 3600;
        }
        /*$timeedit = end time*/
        /*$secondtime = start time*/
        /*$existededit = exisiting appointment*/

        if ($timeedit <= $existedit and $timeedit >= $existstart) {
             header("location:Cancel.php");
        }
        $count = $count + 1;
    }

    /*SELECT query to retrieve data from the database. A complex query due to two parameters.*/
    $sqlquery = "SELECT * FROM $tablename WHERE Date = '$date' AND Time = '$time'";
    $sqlresult = mysqli_query($connection, $sqlquery);
    /*Validate the query.*/
    if (! $sqlresult) {
        echo ("Could not retrieve the sql data : " . mysqli_error($connection) . " " . mysqli_errno($connection));
    }
    $rows = mysqli_fetch_row($sqlresult);
    $date1 = $rows[3];
    $time1 = $rows[4];

    /*Compare the date and times and validate.*/
    if ($date === $date1 && $time = $time1) {
        echo("This date/time is taken!");
        header("location:CreateAppointmentForm.php");
    } else {
        /*Insert the data into the database if validation passes.*/
        $query = "INSERT INTO appointmentinformation (ClientID, Length, Date, Time) VALUES ('$clientid', '$length', '$date', '$time')";
        $result = mysqli_query($connection, $query);
            if ($result) {
                header("Location:UserCP.php");
            } else {
                echo ("Could not insert data : " . mysqli_error($connection) . " " . mysqli_errno($connection));
            } 
    }

?>

strftime第一个参数为字符串格式,第二个时间戳为http://php.net/manual/en/function.strftime.php,但您将时间戳作为第一个参数:例如,在此处计算$ timeedit = strtotime($ edittime)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM