预约系统老虎机

时间:2015-04-26 19:29:59

标签: php appointment

我正在尝试预约系统,其中一切正常,除了约会时间段,例如,如果预约设定在上午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));
            } 
    }

?>

2 个答案:

答案 0 :(得分:0)

strftime第一个参数是字符串格式,第二个时间戳http://php.net/manual/en/function.strftime.php但你给出时间戳作为第一个参数:例如这里计算$ timeedit = strtotime($ edittime)

答案 1 :(得分:0)