2011-12-22 28 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>"; 

入住這在每個循環的不是好主意 - 這產生了許多數據庫查詢。 我該怎麼做?

我也可以使用jQuery和例如JSON如果這是可能的。

回答

1

全部列出來的鍵陣列,然後通過日曆循環時簡單地檢查這些密鑰。

例如,你會得到數組array(1 => array('07:00' => true))(一週=>約會的日子)。

就可以檢查isset($array[$datetime->format('N')][$datetime->format('H:i')])

+0

可能你爲我解釋一下這個例子嗎?我不明白 – 2011-12-22 10:44:25

+2

您只需將數據庫中的所有信息下載到本地陣列,而不是每次查詢時都需要查詢。然後通過使用密鑰將其存儲在易於搜索的數組中。 '$ array [1]'會在星期一指向你所有的約會,'$ array [1] ['08:00']'是星期一上午8點的約會。這樣它只需要一個MySQL查詢。 – 2011-12-22 10:46:23

+0

謝謝:)所以如何改變我的例子使用$ datetime-> format('N')?現在這是不可能的... – 2011-12-22 10:56:47