我正在编写一小段 PHP 代码,它将显示一个表格; X 轴将显示过去 14 天的窗口,Y 轴将在第一列中显示计算机列表,每个日期单元格的内容将显示计算机在该日期的状态(如下示例)。
|Hostname |1 |2 |3 |
+-----------+----+---------+
|computer1 |OK |DEAD |OK |
|computer2 |OK | | |
我需要该表是完全动态的 - 所以如果今天添加一个新系统;它将显示并具有今天的状态,但不会显示前一天的状态。到目前为止一切顺利 - 但是我的 table 没有正确关闭 - 因此计算机状态是垂直添加的,而不是水平添加的,所以它看起来更像是这样:
|Hostname |1 |2 |3 |
+-----------+----+---------+
|computer1 |OK | | |
|computer2 |OK | | |
|computer1 |DEAD| | |
|computer1 |OK | | |
无法找出关闭表格的好方法,同时保持准确、动态的内容。该表的代码如下(顺便说一句,缺少主机名列):
<?php
$dates2 = mysql_query("SELECT day, month, year, hostname FROM log WHERE date >= DATE_ADD(CURDATE(), INTERVAL -14 DAY) ORDER BY date;");
?>
<?php
echo "</thead>";
echo "<tbody>";
echo "<tr>";
while ($row = mysql_fetch_array($dates2))
{
echo "<td><a href='/log/" . $row['hostname'] . ".log'>" . $row['hostname'] . "</a></td>";
$state_date = mysql_query("SELECT state FROM log WHERE hostname = '" . $row['hostname'] . "' AND day = '" . $row['day'] . "' AND month = '" . $row['month'] . "' AND year = '" . $row['year'] . "' ORDER BY date;");
while($row2 = mysql_fetch_array($state_date))
{
if(isset($row2['state']))
{
if ($row2['state'] == 'ok')
{
echo "<td bgcolor='#FF0000'>" . $row2['state'] . "</td>";
}
elseif($row2['state'] == 'dead')
{
echo "<td bgcolor='#00FF00'>" . $row2['state'] . "</td>";
}
else
{
echo "<td bgcolor='#FFD732'>" . $row2['state'] . "</td>";
}
}
else
{
echo "<td>Unknown</td>";
}
}
echo "</tr>";
}
echo "</tbody></table>";
mysql_close($con);
?>
最佳答案
您需要将
while (...)
{
echo "<tr>";
...
echo "</tr>";
}
关于具有动态内容的 PHP 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21320567/