5

对于“ProspectStatus”字段,我可以从mysql 的表/列中显示三个值,RED,GREEN,YELLOW

无论如何我可以让单元格根据值更改其背景颜色吗?

例如

echo "<td>" . $row['ProspectStatus'] . "</td>";

PHP代码:

 $result = mysql_query("SELECT * FROM customerdetails"); 
//List the Columns for the Report 
echo "<table border='1'> 
<tr> 
<th>CustomerID</th> 
<th>Customer Name</th> 
<th>Prospect Status</th> 
<th>Address</th> 
</tr>"; 

while($row = mysql_fetch_array($result)) 
  { 
  echo "<tr>"; 
  echo "<td>" . $row['CustomerID'] . "</td>"; 
  echo "<td>" . $row['CustomerName'] . "</td>"; 
  echo "<td>" . $row['ProspectStatus'] . "</td>"; //this is the field I want to show either RED, GREEN or YELLOW 
  echo "<td>" . $row['Address'] . "</td>"; 
  echo "</tr>"; 
  } 
echo "</table>";  
4

6 回答 6

6

你可以这样做:

while($row = mysql_fetch_array($result)) 
  { 
  echo "<tr>"; 
  echo "<td>" . $row['CustomerID'] . "</td>"; 
  echo "<td>" . $row['CustomerName'] . "</td>"; 
  if($row['ProspectStatus']=='[val1]') // [val1] can be 'approved'
         echo "<td style='background-color: #00FF00;'>".$row['ProspectStatus']."</td>"; 
  else if($row['ProspectStatus']=='[val2]')// [val2]can be 'rejected'
         echo "<td style='background-color: #FF0000;'>".$row['ProspectStatus']."</td>"; 
  else if($row['ProspectStatus']=='[val3]') //[val3] can be 'on hold'
         echo "<td style='background-color: #FFFF00;'>".$row['ProspectStatus']."</td>"; 
  echo "<td>" . $row['Address'] . "</td>"; 
  echo "</tr>"; 
  } 
echo "</table>";  

状态的值可能取决于颜色。我假设val1和是 3 种颜色的值val2val3

于 2013-07-04T05:37:49.310 回答
0
echo "<tr style='background-color: ". $row['ProspectStatus'] ."'>";

或者做一个 if 语句来检查什么颜色 || 然后显示回声

那应该行得通。

于 2013-07-04T05:29:05.450 回答
0

既然您说您只想更改一个特定单元格的颜色,这应该可以解决问题:

while($row = mysql_fetch_array($result)) 
      { 
      echo "<tr>"; 
      echo "<td>" . $row['CustomerID'] . "</td>"; 
      echo "<td>" . $row['CustomerName'] . "</td>"; 
      echo "<td  style='background-color: ". $row['ProspectStatus'] ."'>" . $row['ProspectStatus'] . "</td>";
      echo "<td>" . $row['Address'] . "</td>"; 
      echo "</tr>"; 
      } 
于 2013-07-04T05:30:12.287 回答
0

首先,为此使用 CSS,而不是凌乱的内联样式定义

最易于维护的选项可能会将颜色代码本身与视图逻辑分开,因此在 CSS 中,创建一些新类:

td.done { background-color: green; }
td.working { background-color: yellow; }
td.stopped { background-color: red; }

然后,在您的循环中执行此操作(您不需要 echo 语句,<?and?>标签之外的任何内容都将被解析为 HTML 而不是 PHP):

<?php while($row = mysql_fetch_array($result)): ?>
<tr>
    ....
    <td class='<?= $row['ProspectStatus']; ?>'><?= $row['ProspectStatus']; ?></td>
    ....
</tr>
<?php endwhile; ?>

这样,如果ProspectStatus是“完成”,则单元格将具有绿色背景,如果它正在“工作”,它将具有黄色背景,如果它停止,它将具有红色背景。

如果 ProspectStatus 是一个范围,否则不是这么简单

假设ProspectStatus没有done, workingandstopped或类似的简单值,而是一个范围,为此您可以使用简单的嵌套三元运算符来获取您想要的颜色,而不是<tr class='<?= $row['ProspectStatus']; ?>'>

<tr class='<?php echo ($row['ProspectStatus'] >= 80) ? "done" : (($row['ProspectStatus'] >= 40) ? "working" : "stopped"); ?>'>

使用这一行,如果ProspectStatus大于 80,则该字段将为绿色,如果介于 40 和 80 之间,则为黄色,如果低于 40,则该字段为红色。

注意:mysql_函数已弃用

通过使用这些mysql_功能,您的程序可能无法在 PHP 的未来版本中运行,因为这些功能在 5.5 中已被正式弃用。

执行查询的新推荐方法是:

$mysqli = new mysqli("username","password","hostname","password");
$result = $mysqli->query("SELECT * FROM customerdetails");
while($row = $result->fetch_assoc())...

希望这可以帮助。

于 2013-07-04T07:12:00.690 回答
0

class为该单元格创建一个您想要的颜色,然后创建一个if检查该值的语句。根据值,回显class.

于 2013-07-04T05:25:19.120 回答
0

是的,您可以将其添加到您的表格数据标签中,如下所示

以下代码将起作用:

while($row = mysql_fetch_array($result)) 
  { 
  echo "<tr style='background-color: ". $row['ProspectStatus'] ."'>"; 
  echo "<td>" . $row['CustomerID'] . "</td>"; 
  echo "<td>" . $row['CustomerName'] . "</td>"; 
  echo "<td>" . $row['ProspectStatus'] . "</td>"; //this is the field I want to show either RED, GREEN or YELLOW 
  echo "<td>" . $row['Address'] . "</td>"; 
  echo "</tr>"; 
  } 
于 2013-07-04T05:27:36.473 回答