本文介绍在 php + bootstrap 环境下,如何让多个 `` 标签触发同一个模态框(modal),但根据点击来源动态加载对应 sql 查询结果,避免重复定义多个模态框或硬编码逻辑。
要实现“单个模态框、多数据源”的效果,核心在于解耦 HTML 渲染与数据获取逻辑:原始代码中所有查询($tekmuhadiTab 和 $tekmuhadiTab2)在页面加载时即执行,并在模态框 HTML 中静态输出(while(odbc_fetch_row(...))),这导致无法按需切换数据源。
✅ 正确做法是采用 AJAX 驱动的动态内容加载——点击链接时不直接打开含死数据的模态框,而是先发送请求获取对应查询结果,再注入到模态框中并显示。
查表1 查表2
加载中...
正在加载...
"SELECT name, dept, phone FROM tech_staff",
'tekmuhadi2' => "SELECT name, status, last_updated FROM tech_backup"
];
$result = odbc_exec($conn, $sqlMap[$queryKey]);
if (!$result) {
echo '查询执行失败。';
exit;
}
// 渲染表格(注意:odbc_result 字段索引从 1 开始)
echo '| 姓名 | 部门/状态 | 联系方式/更新时
|
|---|---|---|
| ' . htmlspecialchars(odbc_result($result, 1)) . ' | '; echo '' . htmlspecialchars(odbc_result($result, 2)) . ' | '; echo '' . htmlspecialchars(odbc_result($result, 3)) . ' | '; echo '
通过该架构,你只需维护一个模态框、一个后端接口和清晰的查询映射,即可灵活支持任意数量的数据源,真正实现「一次定义、按需渲染」。