如何根据某些条件使用 jQuery 将信息动态地放在表上


How to put information dynamically on tables using jQuery based on certain criteria?

假设我必须用PHP制作一个具有以下结构的表。每个细胞都标识NamedayHour只是一个指标(每天的Mon0,Mon1等)。我应该把信息放在那个单元格上,每天和每小时都是不同的。

整个结构是这样的:

<table border="1" >
<th>Hour</th>
<th>Mon 25-06-2012</th>
<th>Tue 26-06-2012</th>
<th>Wed 27-06-2012</th>
<th>Thu 28-06-2012</th>
<th>Fri 29-06-2012</th>
<tr><td>8:00</td><td>Mon0</td><td>Tue0</td><td>Wed0</td><td>Thu0</td><td>Fri0</tr>
<tr><td>8:20</td><td>Mon1</td><td>Tue1</td><td>Wed1</td><td>Thu1</td><td>Fri1</tr>
<tr><td>8:40</td><td>Mon2</td><td>Tue2</td><td>Wed2</td><td>Thu2</td><td>Fri2</tr>
<tr><td>9:00</td><td>Mon3</td><td>Tue3</td><td>Wed3</td><td>Thu3</td><td>Fri3</tr>
<tr><td>9:20</td><td>Mon4</td><td>Tue4</td><td>Wed4</td><td>Thu4</td><td>Fri4</tr>
<tr><td>9:40</td><td>Mon5</td><td>Tue5</td><td>Wed5</td><td>Thu5</td><td>Fri5</tr>
</table>    

所以,我有数组:

$hoursMonday = array("8:00", "8:20", "8:40")
$hoursMondayAssigned = array("8:00", "8:20")
$hoursMondayAvailable = array("8:40")

从周一到周五,我每天都有这 3 个数组。

然后我需要在表格中写下每天的小时数。例如,在这种情况下,我需要在星期一和小时(8:40)的单元格上放置文本"可用",对于"8:00"和"8:20",我应该在星期一的列中列出这些时间,系统应该为这两个时间加上"忙碌"。

使用示例数组生成的表应类似于下表:

<table border="1" >
<th>Hour</th>
<th>Mon 25-06-2012</th>
<th>Tue 26-06-2012</th>
<th>Wed 27-06-2012</th>
<th>Thu 28-06-2012</th>
<th>Fri 29-06-2012</th>
<tr><td>8:00</td><td>BUSY</td><td>Tue0</td><td>Wed0</td><td>Thu0</td><td>Fri0</tr>
<tr><td>8:20</td><td>BUSY</td><td>Tue1</td><td>Wed1</td><td>Thu1</td><td>Fri1</tr>
<tr><td>8:40</td><td>AVAILABLE</td><td>Tue2</td><td>Wed2</td><td>Thu2</td><td>Fri2</tr>
<tr><td>9:00</td><td>Mon3</td><td>Tue3</td><td>Wed3</td><td>Thu3</td><td>Fri3</tr>
<tr><td>9:20</td><td>Mon4</td><td>Tue4</td><td>Wed4</td><td>Thu4</td><td>Fri4</tr>
<tr><td>9:40</td><td>Mon5</td><td>Tue5</td><td>Wed5</td><td>Thu5</td><td>Fri5</tr>
</table>
</html>

我想使用jQuery,或者只是PHP来解决这个问题。

需要注意的一点是,频率的参数(在本例中为10分钟)可能会有所不同。例如,如果频率设置为 30 分钟,时间将是:8:00,8:30,9:00,9:30等。

我真的不知道如何使用jQuery解决这个问题。我知道如何使用 for 循环编写表,但是当我需要时,复杂性正在升级根据日期和时间将信息放在正确的单元格上。

谢谢。

您可以在 PHP 中执行以下操作,以找出每小时是否已经分配或免费:

$hoursMonday = array("8:00", "8:20", "8:40");
$hoursMondayAssigned = array("8:00", "8:20");
$hoursMondayAvailable = array("8:40");
foreach( $hoursMonday AS $hour ) {
    if( in_array( $hour, $hoursMondayAssigned ) ) {
        echo 'Busy at ' . $hour;
    } else if ( in_array( $hour, $hoursMondayAvailable ) ) {
        echo 'Free at ' . $hour;
    }
}

为了自动循环所有的日子,我建议每天使用递归数组,例如:

$monday = array(
    'free' => array(
        '08:40', '09:00'
    ),
    'busy' => array(
        '08:40',
    ),
    'free' => array(
        '09:00',
    ),
);