我正在一个公司网站上工作,您可以在其中检索(通过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语句中定义一个值,然后尝试使它成为一个条件以便整个行被着色时出现问题(如果选择了case 1并且我们没有准时,则为黄色;如果案例2被选中,我们没有准时)。
答案 0 :(得分:2)
你的代码片段并没有真正解释,但从我可以看到,我会建议你的开关不同。您的开关正在构建HTML输出。
我鼓励使用switch而不是在$ style变量中设置样式,而且......严格来说,它使得用例更好的逻辑:首先然后默认:例如。
switch ($condition) {
case 1 : $style = 'background:red;'; break;
case 2 : $style = 'background:yellow;'; break;
default : $style = 'background:white;';
}
现在构建您的HTML,例如
foreach ($results as $row) echo '<tr><td style="'.$style.'">Cell data</td></tr>';
对于开关上的多个案例:
switch ($condition) {
case 0:
case 1:
// Do something
break;
case 2: /* Do something */ break;
default: /* Do something */ break;
}
2层开关:
switch ($condition_1) {
case 0 :
switch ($condition_2) {
case 'A' :
// do something
break;
}
break;
}
不要忘记两个级别的BREAK