簡體   English   中英

預約系統插槽

[英]Appointment Booking System Slots

我試圖建立一個約會預訂系統,除了約會時段外,其他所有功能都可以正常工作,例如,如果約會設置為上午11.30,持續一個小時(下午12.30),則沒有人可以預訂或在這些時間內預約。 我已經將輸入的開始和結束時間轉換為Unix時間,以及轉換了數據庫中已設置的時間,但這使我失敗了。

我嘗試比較用戶設置的兩次之間的結束時間,以及數據庫中已有的兩次之間的用戶結束時間。 我的代碼是:

 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;
        }

如果您需要整個文件,請給我喊一聲。

我一直在尋找沒有盡頭的東西,並且在檢查了Unix次之后,它應該可以工作了! 但事實並非如此! ):

<?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