Resaltando una celda PHP un cierto color basado en el valor de MYSQL

Tengo tres valores que se pueden mostrar desde una tabla / columna en mysql , ROJO, VERDE, AMARILLO para el campo “ProspectStatus”

¿Hay alguna forma en que pueda hacer que una celda cambie su color de fondo en función del valor?

p.ej

echo "" . $row['ProspectStatus'] . ""; 

Código PHP:

  $result = mysql_query("SELECT * FROM customerdetails"); //List the Columns for the Report echo ""; while($row = mysql_fetch_array($result)) { echo ""; echo ""; echo ""; echo ""; //this is the field I want to show either RED, GREEN or YELLOW echo ""; echo ""; } echo "
CustomerID Customer Name Prospect Status Address
" . $row['CustomerID'] . "" . $row['CustomerName'] . "" . $row['ProspectStatus'] . "" . $row['Address'] . "
";

Puedes hacer esto con esto:

 while($row = mysql_fetch_array($result)) { echo ""; echo "" . $row['CustomerID'] . ""; echo "" . $row['CustomerName'] . ""; if($row['ProspectStatus']=='[val1]') // [val1] can be 'approved' echo "".$row['ProspectStatus'].""; else if($row['ProspectStatus']=='[val2]')// [val2]can be 'rejected' echo "".$row['ProspectStatus'].""; else if($row['ProspectStatus']=='[val3]') //[val3] can be 'on hold' echo "".$row['ProspectStatus'].""; echo "" . $row['Address'] . ""; echo ""; } echo ""; 

El valor del estado puede depender del color. Supongo que val1 , val2 y val3 son los valores de los 3 colores.

Cree una class del color que desea para esa celda y luego haga una instrucción if que verifique el valor. Dependiendo del valor, repite esa class .

sí, puede agregarlo etiqueta de datos de tabla como a continuación

El siguiente código funcionará:

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

o haz una statement if verificando qué color || luego mostrando el eco

Eso debería funcionar.

Como dijiste que querías cambiar el color de una sola celda en particular, esto debería ser el truco:

 while($row = mysql_fetch_array($result)) { echo ""; echo "" . $row['CustomerID'] . ""; echo "" . $row['CustomerName'] . ""; echo "" . $row['ProspectStatus'] . ""; echo "" . $row['Address'] . ""; echo ""; } 

En primer lugar, use CSS para esto, no desordenado definiciones de estilo en línea

La opción más fácil de mantener probablemente separaría los códigos de color de la lógica de vista, por lo que en CSS, crea algunas clases nuevas:

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

Luego, en su ciclo simplemente haga esto (no necesita las declaraciones de eco, cualquier cosa que no sea Y ?> Se analizarán como HTML en lugar de PHP):

   .... '> ....   

De esta forma, si ProspectStatus está 'hecho', la celda tendrá un fondo verde, si está 'funcionando', tendrá un fondo amarillo y si se detiene tendrá un fondo rojo.

Si ProspectStatus es un rango, o de lo contrario no es tan simple

Digamos que ProspectStatus no tiene valores simples de working , stopped y stopped , y en su lugar es un rango, para esto puede usar un simple operador ternario nested para obtener el color que desea en lugar de

'>

'>

:

 = 80) ? "done" : (($row['ProspectStatus'] >= 40) ? "working" : "stopped"); ?>'> 

Con este trazador de líneas uno, si ProspectStatus es mayor que 80, el campo será verde, si está entre 40 y 80 será amarillo y si está por debajo de 40 será rojo.

Nota: mysql_ funciones de mysql_ están DEJADAS

Al usar las características de mysql_ , corre el riesgo de que su progtwig no funcione en las versiones futuras de PHP, ya que esas funciones se han desaprobado formalmente a partir de 5.5.

La nueva forma recomendada para realizar su consulta es esta:

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

Espero que esto ayude.