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

PHP 動態生成 HTML 表格通用函數:字段映射、條件格式化、鏈接生成

     編輯:PHP 相關知識

PHP 動態生成 HTML 表格通用函數:字段映射、條件格式化、鏈接生成

本文提供一個靈活的 showTable() 函數,根據字段映射數組動態生成 HTML 表格,支持字段選擇、重命名、條件格式化(如郵箱自動加鏈接)、斑馬紋行色,解決 odbc_result_all() 只能全量輸出、無法定制的痛點。

核心函數集

<?php
/** 顯示表頭 */
function showHeader(array $headerMap) {
    echo "<tr>";
    foreach ($headerMap as $field => $label) {
        echo "<th>$label</th>";
    }
    echo "</tr>";
}

/** 顯示數據行 */
function showList(array $headerMap, array $dataRows) {
    $fields = array_keys($headerMap);
    foreach ($dataRows as $i => $row) {
        $trClass = ($i % 2 === 0) ? 'even' : 'odd';
        echo "<tr class='$trClass'>";
        foreach ($fields as $field) {
            $value = $row->$field ?? '';
            $cell = $value !== '' ? htmlspecialchars($value) : '&nbsp;';
            // 示例:Email 字段自動加 mailto: 鏈接
            if ($field === 'EmailAdd' && $value) {
                $cell = "<a href='mailto:$value'>$value</a>";
            }
            echo "<td>$cell</td>";
        }
        echo "</tr>";
    }
}

/** 主入口:生成完整表格 */
function showTable(array $headerMap, array $dataRows, string $tableAttrs = 'border="1"') {
    echo "<table $tableAttrs>";
    showHeader($headerMap);
    showList($headerMap, $dataRows);
    echo "</table>";
}
?>

使用示例

<?php
// 假設從 SQL Server 獲取對象數組
$arr_list = mssql_fetch_object($result); // 返回 stdClass 對象數組

// 定義顯示字段映射:字段名 => 表頭標籤
$arr_header = [
    "UserName" => "用戶名",
    "EmailAdd" => "電子郵件",
    "Homepage" => "個人主頁"
    // 故意省略 Password 字段
];

// 調用生成表格
showTable($arr_header, $arr_list, 'border="2" class="user-table"');
?>

輸出效果

用戶名電子郵件個人主頁
zhangsanzhangsan@example.comhttps://zhangsan.com
lisilisi@example.comhttps://lisi.com

進階擴展建議

  1. 回調格式化:允許傳入 $formatters = ['EmailAdd' => fn($v) => "<a href='mailto:$v'>$v</a>"] 實現通用字段轉換。
  2. 排序/分頁:結合 JS (DataTables) 或服務端 LIMIT 實現交互式表格。
  3. 導出功能:復用字段映射生成 CSV/Excel 下載。
  4. 安全性:所有輸出經 htmlspecialchars() 防 XSS,URL 經 urlencode()。
  5. 模板引擎整合:現代項目建議改用 Twig/Blade 模板引擎分離邏輯與視圖。

適用場景對比

方案優點缺點適用場景
odbc_result_all()零代碼、快速原型無法定制字段、樣式、格式化內部調試、臨時導出
本文 showTable()字段可控、支持格式化、可擴展需維護映射配置、純 PHP 渲染中小型後台列表、報表導出
模板引擎關注點分離、前端友好、緩存優化學習成本、引入依賴中大型項目、團隊協作
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved