【发布时间】:2011-10-20 20:28:17
【问题描述】:
我正在一个公司网站上工作,您可以在其中检索(通过 MySQL 咨询)一些在 HTML 表中格式化的数据。如果特定字段值是一个或另一个,则尝试更改行颜色时会出现问题。
(部分)代码是:
$RowCt = 0;
while($Row = mysql_fetch_assoc($Result))
{
$timezone = new DateTimeZone( "Europe/London" );
$date = new DateTime();
$date->setTimezone( $timezone );
$ahora = $date->format( 'H:i' );
if ($var == 1) {
$rowcolor = "red";
} else if ($var == 0) {
$rowcolor = "yellow";
} else {
$rowcolor = "white";
}
//$Table.= "<tr style='background-color:#FFFFFF;'>";
foreach($Row as $field => $value)
{
switch ($field) {
default:
$Table.= "<td style='font-size:14px; background-color:$rowcolor' align='center'>$value</td>";
break;
case a:
if ($now > $value) {
$var == 0;
} else {
// Do nothing
}
$Table.= "<td style='font-size:14px; background-color:$rowcolor' align='center'>$value</td>";
break;
case b:
if ($now > $value) {
$var == 1;
} else {
// Do nothing
}
$Table.= "<td style='font-size:14px; background-color:$rowcolor' align='center'>$value</td>";
break;
case c:
switch ($value) {
case 1:
$Table.= "<td style='font-size:14px; background-color:$rowcolor' align='center'>a</td>";
break;
case 2:
$Table.= "<td style='font-size:14px; background-color:$rowcolor' align='center'>b</td>";
break;
}
case d:
switch ($value) {
case 3:
$Table.= "<td style='font-size:14px; background-color:$rowcolor' align='center'>a</td>";
break;
case 4:
$Table.= "<td style='font-size:14px; background-color:$rowcolor' align='center'>b</td>";
break;
case 5:
$Table.= "<td style='font-size:14px; background-color:$rowcolor' align='center'>c</td>";
break;
case 6:
$Table.= "<td style='font-size:14px; background-color:$rowcolor' align='center'>d</td>";
break;
}
case e:
switch ($value) {
case "E":
$Table.= "<td style='font-size:14px; background-color:$rowcolor' align='center'>a</td>";
break;
case "I":
$Table.= "<td style='font-size:14px; background-color:$rowcolor' align='center'>b</td>";
break;
case "F":
$Table.= "<td style='font-size:14px; background-color:$rowcolor' align='center'>c</td>";
break;
}
}
}
$Table.= "</tr>";
当试图在 switch 语句中定义一个值,然后试图使其成为一个条件时,问题就出现了,因此整行都被着色(如果选择了案例 1 并且我们没有准时,则为黄色;如果案例2被选中,我们没有准时)。
【问题讨论】:
-
你为什么要
$var == 0;?赋值运算符是单个=,仅在比较双精度时使用。 -
您的 switch 语句意义不大。你能描述一下它的含义吗?
-
另外,您的三个
$Table.=语句是相同的 - 如果这是重点,请将它们移出您的开关。您可能还想为每个案例添加不同的$rowcolor... -
感谢您的回答。将
$var更改为单个“=”。$Table.=语句是这样定义的,用于打印整个表格的后部return $Table;。 -
$now 和 $value 输出的是什么?试试 var_dump($now) 和 var_dump($value) 看看你的 if 语句是否在做你认为的事情。那么您将知道这两个是否具有可比性。通常,日期字段中的值很奇怪,具体取决于您的数据库服务器的设置方式以及字段的类型。
标签: php mysql html-table