首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP MySQL 多條件查詢結果高亮輸出:根據業務規則動態標紅字段

     編輯:PHP 相關知識

在數據展示頁面,常需根據業務規則將滿足條件的字段標紅提醒。本文展示從查詢到條件判斷輸出的完整流程。

業務規則

  1. syntime 小於「當前時間前一周」 → 標紅
  2. A 字段為「無」 → 標紅
  3. 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) 復用。
  • 前端用 CSS 類 .highlight { color: red; } 分離樣式。
  • 大數據量時考慮 SQL 層面 CASE WHEN 標記,減少 PHP 判斷開銷。

清晰分離數據邏輯與展示邏輯,讓條件高亮既靈活又可維護。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved