2011-12-22 1 views
0

Я в PHP:проверить базу данных MySQL и добавить в код PHP

<?php 

$columns = array('mon','thu','wed','tue', 'fri', 'sat', 'sun'); 
$num_cols = count($columns); 
$col = 0; 
$datetime = new DateTime("06:00"); 

echo "<table>"; // border=\"1\" for visible border 

// Day header 
echo "<tr>"; 
foreach($columns as $col) { 
    echo "<td at='$col'>$col</td>"; 
} 
echo "</tr>"; 


// Times 
for($i=0; $i<20; $i++) { // FIXME for more entries or other step width 
    echo "<tr>"; 
    $datetime->modify('+30 minutes'); 

    for ($j=0; $j<$num_cols; $j++) 
     echo '<td class="' . $datetime->format('H:i') . '">' . $datetime->format('H:i') . '</td>'; 

    echo "</tr>"; 
} 

echo "</table>"; 

?> 

и в базе данных MySQL:

id | day | hours 
1 | mon | 07:00 
2 | thu | 08:40 
3 | wed | 12:30 
4 | thu | 13:00 
5 | fri | 05:00 
etc 

, как это лучший способ проверить это? Если дата в базе данных, то я хотел бы сделать TD с красным фоном, например, добавить класс красный:

echo "<td at='$col' class='red'>$col</td>"; 

Проверьте это в каждом цикле FOR не является хорошей идеей - это генерируется много запросов для базы данных. Как я могу это сделать?

Я могу использовать также jquery и, например, JSON, если это возможно.

ответ

1

Перечислите все их в массиве с ключом, а затем, прокручивая календарь, просто проверьте эти ключи.

Например, вы получите массив array(1 => array('07:00' => true)) (день недели => назначения).

Вы можете проверить isset($array[$datetime->format('N')][$datetime->format('H:i')])

+0

вы могли бы объяснить мне этот пример? Я не понимаю –

+2

Вы просто загружаете всю информацию из своей базы данных в локальный массив, а не запрашиваете каждый раз, когда вам что-то нужно. Затем вы сохраняете это в легкодоступном массиве с помощью клавиш. '$ array [1]' будет указывать на все ваши встречи в понедельник, а '$ array [1] ['08:00']' будет назначением в понедельник в 8 часов утра. Таким образом, для этого требуется только один запрос MySQL. –

+0

спасибо :) так как можно изменить мой пример для использования $ datetime-> format ('N')? теперь невозможно ... –

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