基于MYSQL值突出显示PHP某种颜色的单元格

时间:2013-07-04 05:21:00

标签: php mysql css

我有三个值可以显示在表格/列中的mysql ,RED,GREEN,YELLOW中的字段“ProspectStatus”

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

e.g。

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>";  

6 个答案:

答案 0 :(得分:5)

你可以这样做:

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>";  

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

答案 1 :(得分:0)

为该单元格创建所需颜色的class,然后创建一个if语句来检查该值。根据值,回显class

答案 2 :(得分: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>"; 
  } 

答案 3 :(得分:0)

echo "<tr style='background-color: ". $row['ProspectStatus'] ."'>";

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

这应该有效。

答案 4 :(得分: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>"; 
      } 

答案 5 :(得分:0)

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

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

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

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

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

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

如果ProspectStatus是一个范围,或者不是这么简单

假设ProspectStatus没有doneworkingstopped或类似的简单值,而是它是一个范围,为此你可以使用一个简单的嵌套三元运算符来获取您想要的颜色而不是<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())...

希望这有帮助。