在數據展示頁面,常需根據業務規則將滿足條件的字段標紅提醒。本文展示從查詢到條件判斷輸出的完整流程。
syntime 小於「當前時間前一周」 → 標紅A 字段為「無」 → 標紅B 字段為「無」 → 標紅$sql = "SELECT username, onoff, intime, syntime, device, a, b, person, dtime FROM cdmobile ORDER BY username DESC";
$rst = mysqli_query($conn, $sql); // 推薦 mysqli
$weekAgo = strtotime('-7 days');
while ($row = mysqli_fetch_assoc($rst)) {
$syntime = strtotime($row['syntime']);
// 構建輸出片段
$output = "";
$output .= $row['username'] . $row['onoff'] . $row['intime'];
// 條件 1:syntime
$output .= ($syntime < $weekAgo)
? "<span style='color:red'>" . $row['syntime'] . "</span>"
: $row['syntime'];
$output .= $row['device'];
// 條件 2:字段 A
$output .= ($row['a'] === '無')
? "<span style='color:red'>" . $row['a'] . "</span>"
: $row['a'];
// 條件 3:字段 B
$output .= ($row['b'] === '無')
? "<span style='color:red'>" . $row['b'] . "</span>"
: $row['b'];
$output .= $row['person'] . $row['dtime'];
echo $output . "<br>";
}
$weekAgo 移出循環,避免重複計算。<span style='color:red'> 而非舊式 <font>。=== 避免類型轉換陷阱。highlightIf($value, $condition, $style) 復用。.highlight { color: red; } 分離樣式。CASE WHEN 標記,減少 PHP 判斷開銷。清晰分離數據邏輯與展示邏輯,讓條件高亮既靈活又可維護。