Создание класса бронирования системы PHP - PullRequest
2 голосов
/ 08 августа 2011

Мне нужна помощь с моим 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 |
+---------------------------------------------------------------------------------------+

1 Ответ

1 голос
/ 15 августа 2011

Вместо вашей текущей стратегии вы могли бы просто хранить количество массивов каждый раз, когда вы находите, например:

//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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...