You need to enable JavaScript to run this app. PHP MySQL 如何将资产审批列表行数据填充至对应审批表单页
优惠活动
大模型
产品
解决方案
定价
更多

PHP MySQL 如何将资产审批列表行数据填充至对应审批表单页

实现选中行数据自动填充的方案

核心逻辑是通过URL查询参数携带选中行的全部资产字段,跳转至审批表单页后读取参数、自动填充对应输入框,全程不需要调整原有数据库查询逻辑。

一、修改资产审批列表页代码

1. 替换原有无参跳转的JS函数

原有的approval()函数固定跳转不带参数,需要改成支持接收当前行字段、自动拼接编码后参数的版本:

<script>
function approval(cat, sn, model, oid, oname, desc){
  // 用URLSearchParams做参数编码,自动处理特殊字符的转义,避免链接结构被破坏
  const params = new URLSearchParams({
    category: cat,
    serial: sn,
    model: model,
    owner_id: oid,
    owner_name: oname,
    desc: desc
  })
  window.location.href = "AddAssetApproval.php?" + params.toString();
}
</script>

2. 替换PHP循环中View按钮的渲染逻辑

原按钮点击时没有传任何参数,需要修改为把当前行的6个字段值作为参数传入JS函数,同时做转义避免单引号引发JS语法错误:

while ($row = mysqli_fetch_assoc($result)) {
    echo '<tr>';
    echo '<td>'. $row['Category'].'</td>';
    echo '<td>'. $row['SerialNumber'].'</td>';
    echo '<td>'. $row['ModelName'].'</td>';
    echo '<td>'. $row['OwnerID'].'</td>';
    echo '<td>'. $row['OwnerName'].'</td>';
    echo '<td>'. $row['Description'].'</td>';
    // 替换原来的按钮代码
    echo '<td><input type="button" value="View" onclick="approval(
        \''.addslashes($row['Category']).'\',
        \''.addslashes($row['SerialNumber']).'\',
        \''.addslashes($row['ModelName']).'\',
        \''.addslashes($row['OwnerID']).'\',
        \''.addslashes($row['OwnerName']).'\',
        \''.addslashes($row['Description']).'\'
    )"></td>';
    echo '</tr> ';
}

注意:如果字段值里包含单引号、反斜杠这类特殊字符,addslashes转义是必须的,否则会导致onclick里的JS字符串提前闭合,按钮直接失效。

二、修改AddAssetApproval.php表单页的输入框逻辑

原表单输入框没有默认值,需要在每个input的value属性中读取URL传递的参数,无参数时保持空值,同时做安全转义避免XSS风险:

<div class="title">
  Add Asset Approval Form
</div>

<div class="form">
  <div class="inputfield">
    <label>Category</label>
    <input type="text" class="input" name="Category" 
      value="<?php echo isset($_GET['category']) ? htmlspecialchars(urldecode($_GET['category'])) : '' ?>">
  </div>
    
  <div class="inputfield">
    <label>Serial Number</label>
    <input type="text" class="input" name="SN" 
      value="<?php echo isset($_GET['serial']) ? htmlspecialchars(urldecode($_GET['serial'])) : '' ?>">
  </div>

  <div class="inputfield">
    <label>Model Name</label>
    <input type="text" class="input" name="Model Name" 
      value="<?php echo isset($_GET['model']) ? htmlspecialchars(urldecode($_GET['model'])) : '' ?>">
  </div>

  <div class="inputfield">
    <label>Owner ID</label>
    <input type="text" class="input" name="OID" 
      value="<?php echo isset($_GET['owner_id']) ? htmlspecialchars(urldecode($_GET['owner_id'])) : '' ?>">
  </div>

  <div class="inputfield">
    <label>Owner Name</label>
    <input type="text" class="input" name="OName" 
      value="<?php echo isset($_GET['owner_name']) ? htmlspecialchars(urldecode($_GET['owner_name'])) : '' ?>">
  </div>

  <div class="inputfield">
    <label>Description</label>
    <input type="text" class="input" name="Desc" 
      value="<?php echo isset($_GET['desc']) ? htmlspecialchars(urldecode($_GET['desc'])) : '' ?>">
  </div>
</div>

可选优化

如果存在描述字段过长、URL长度限制导致参数截断的问题,可以调整为仅传递当前行的主键ID(比如waiting_approval表的自增id字段),跳转后在表单页根据ID重新查询数据库拿到完整数据再填充,这种方式也能避免用户手动修改URL参数伪造资产数据,安全性更高。


内容的提问来源于stack exchange,提问作者Kin Wei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.08 11:36:04