2015-11-26 3 views
0

Я делаю календарь с использованием PHP (http://imgur.com/mlNxAdT) и сталкиваюсь с некоторыми проблемами. Я хочу, чтобы календарь был более автоматизированным на данный момент, так как я вручную создаю таблицу и ставил время и дни в себе, и это нормально, но моя проблема в том, что мне понадобится функция SQL для каждого часа (от 10: 00-17: 00) на каждый день, который кажется крайне неэффективным.Проверьте, превышает ли время в базе данных определенный час

Мой HTML кодовая таблица структурирована как таковой:

<tr> 
    <td> 
    <span> 
     <p style="float:left">10:00</p> 
     <p style="float:right">&nbsp;&nbsp;&nbsp;(<?php echo $var->monday_10; ?>)</p> 
    </span> 
    </td> 
    <td></td> 
    <td></td> 
    <td></td> 
    <td></td> 
    <td></td> 
    <td></td> 
</tr> 

И у меня есть эта PHP функция:

public function get_CalendarCount($conn) 
{ 
    // TODO: Comment this function 
    // TODO: If a booking goes over a time (eg. 13:00) then add to count 
    $sql = 
    " 
    SELECT DAYNAME(arrivalTime) AS day, COUNT(*) AS count 
    FROM bookings 
    WHERE HOUR(arrivalTime) = 10 
    AND DAYNAME(arrivalTime) = 'Monday' 
    "; 
    $result = $conn->query($sql); 

    if ($result->num_rows > 0) 
    { 
     while($row = $result->fetch_assoc()) 
     { 
      $this->monday_10 = $row["count"]; 
     } 
    } 
    else 
    { 
     echo "0 results"; 
    } 
} 

Как вы можете видеть, время, в данном примере (13,00) и день (Понедельник) вручную. Как я могу изменить это, чтобы получить время/день из таблицы и сохранить как одну и ту же функцию для каждого td?

Кроме того, я хотел бы изменить свой SQL-запрос (как показано в функции PHP get_CalendarCount), чтобы он проверял, происходит ли задержка в базе данных (http://imgur.com/7A0cxGr) (например, время прибытия 10:00 - pickupTime 12 : 00 - как 10:00, так и 11:00 необходимо пересчитывать, поскольку бронирование производится за 10:00 & 11:00 (1 час каждый).

Очень понравилась бы помощь, поскольку я немного застрял здесь , не может ничего найти для этого решения.

+0

Я думаю, вы должны захватить данные и обработать его при помощи PHP, а не делать все с помощью запроса. – Daniel

+0

JQuery? Функция находится в PHP. –

+1

Он говорит о SQL-запросах. Я не согласен с @Stah и думаю, что логика БД должна быть выполнена в БД. – apscience

ответ

1

Это не отвечает на логику, вы должны изменить, но вопрос об использовании переменных в вашем запросе, поэтому вам не нужно вручную их вводить. о создании переменная hour и dayname вам нужно изменить:

public function get_CalendarCount($conn) 
{ 
$sql ="SELECT DAYNAME(arrivalTime) AS day, COUNT(*) AS count 
FROM bookings WHERE HOUR(arrivalTime) = 10 AND DAYNAME(arrivalTime) = 'Monday'"; 

в:

public function get_CalendarCount($conn,$hour,$dayname) 
{ 
$sql ="SELECT DAYNAME(arrivalTime) AS day, COUNT(*) AS count 
FROM bookings WHERE HOUR(arrivalTime) = ".$hour." AND DAYNAME(arrivalTime) = '" . $dayname ."'"; 
+0

Я буду использовать Javascript, чтобы получить час и день из таблицы, а затем передать его. Я попробую это когда-нибудь домой. –

Смежные вопросы