Ваш код делает именно то, что вы ему говорите: выводит строку с надписью «background-color: ...».
Как браузер узнает, что вы хотите стиль текст с этим цветом вместо того, чтобы представлять эти слова пользователю? Вместо
$msg .= ($row['opened'] == '0') ? "background-color: #DDEDFF;" : "background-color: #000000;";
попробуйте что-нибудь вроде:
$color = $row['opened'] == '0' ? "#DDEDFF" : "#000000";
$msg .= "<span style='background-color:$color'>THE TEXT YOU WANT TO COLORIZE</span>";
ПОЛНЫЙ ПРИМЕР
<?php
function getLatestMessage($opened) {
$color = $opened ? "#DDEDFF" : "#000000";
$msg = "<span style='background-color:$color'>THE TEXT YOU WANT TO COLORIZE</span>";
return $msg;
}
echo getLatestMessage(true);
echo getLatestMessage(false);
?>