El código está aparentemente bien, excepto por la condición del if.
Actualmente tienes esto:
if($d->fechaActual == 0) {
echo '<span style="color:green">' . $d->fechaActual . '</span>';
} else {
echo '<span style="color:red">' . $d->fechaActual . '</span>';
}
Pero habría que preguntarse ¿Qué es lo que hay en el campo fechaActual de la base de datos?. Porque tú estás dejando entender con este código que en el registro debería haber un cero para que se mostrase en verde. Quizás en tu caso, como en el campo de fechaActual nunca va a haber un cero, siempre te lo pone de color rojo? Porque supongo que el valor cero no debe ser el que tendrás en la columna cuando nadie ha colocado la fecha. Podría ser algo como null, quizás la fecha 0000-00-00, quizás la cadena vacía. Depende mucho de cómo se haya definido la base de datos, pero no has indicado este detalle al formular tu pregunta.
Como digo, aquí depende del valor predeterminado que hay en la columna fechaActual cuando está "vacío". Si hubiera un valor "null", tendrías que poner algo como esto:
if(is_null($d->fechaActual)) {
echo '<span style="color:red">' . $d->fechaActual . '</span>';
} else {
echo '<span style="color:green">' . $d->fechaActual . '</span>';
}
Nota: he cambiado el sentido de la condición. Ahora en caso positivo del if se entiende que el campo estaba vacío y por eso se le coloca con color de fondo en verde. Espero que esto no te líe.
En cualquier caso, tendrás que investigar algo para resolverlo, aunque espero haberte orientado.
¿Color de la celda o color del texto?
Hay un detalle importante en esta pregunta. Se hace referencia al color de la celda, pero tal como se ha enfocado el código original, lo que estamos modificando es el color del texto de la celda y no la celda en si.
Si se desea que se cambie el color del fondo de la celda, entonces el código sería otro.
<td align="right"
<?php
if($d->fechaActual == 0) {
echo ' style="background-color: green; color: white;"';
} else {
echo ' style="background-color:red; color: white;"';
}
?>
><?= $d->fechaActual ?></td>
Como se puede ver, la diferencia es que estamos indicando el atributo style sobre la etiqueta <td> de la celda, en lugar de sobre el <span> del contenido de la celda.
Consideraciones importantes:
- El código PHP de estos ejemplos es bastante pobre. Se están cayendo en varios antipatrones. El más importante es que se está mezclando todo el código de las distintas responsabilidades. Sería importantísimo trabajar con algún sistema de templates, para no mezclar el HTML con el PHP. O si es posible aplicar MVC.
- El CSS no se aconseja aplicar en las mismas etiquetas. Eso es lo que se conoce como un "CSS inline" y es también un antipatrón. Lo ideal sería tener clases (class CSS) que puedes usar para destacar como error o como válido cualquier dato.
Los antipatrones de este estilo de código puede que te funcionen, pero te van a dar serios problemas en el futuro para el mantenimiento de las aplicaciones. Esto es algo que no vemos tanto en DesarrolloWeb.com, pero que sí que tratamos con mucha fuerza en los cursos de EscuelaIT, que te recomiendo seguir, para poder aprender las buenas prácticas y generar aplicaciones mucho más robustas, seguras, escalables, mantenibles. Lo agradecerás.