You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PHP中获取MySQL查询后echo生成的表格表单内的指定输入值

问题:PHP中获取动态生成表单的对应输入值

问题描述

现有根据MySQL指标表动态生成的表单,提交后所有achievement输入框的值会在每个指标下重复输出,需要实现1个指标对应1个achievement值的效果。

现有代码

while ($row = mysqli_fetch_row($query)){ 

$_SESSION['id_kpi']=$row[0];
echo '<tr>
        <td>
            <span class="textarea" role="textbox" name="kpi'. ++$n .'" contenteditable>'.$row[1].'</span>
        
        </td>
        <td>
            <span style="margin-left:30px;">
            <input type="text" name="achievement[]" id="achievement" style="width:30%">
            </span>
        </td>
        
    </tr>';

    
if( isset( $_POST['submit'] ) )
{       

$idkpi = $row[0];

$achi = $_POST['achievement'];

$items = array();
for($i = 0 ; $i < $count ; $i++){
  $items[$i] = array(  
    "achieve"       => $achi[$i]
  );
}

$value = array();
foreach($items as $item){
  $value[] = "('{$item['achieve']}')";
}

$values = implode(", ", $value);

echo 'Your value is '.$values. '<br>';

}

问题根源

  1. 表单提交的处理逻辑被放在了遍历KPI的while循环内部,每遍历一行KPI数据就会执行一次提交处理,所以每次都会输出全部的achievement值,导致重复显示。
  2. 动态生成的achievement输入没有和对应KPI的唯一ID绑定,提交后无法直接匹配值对应的指标。
  3. 所有输入框都设置了相同的id="achievement",属于不符合规范的HTML结构,也会影响后续取值逻辑。

修复方案

代码修改示例

// 提交处理逻辑放在循环外,仅执行一次
if( isset( $_POST['submit'] ) ){       
    $achi = $_POST['achievement'];
    $value = array();
    foreach($achi as $kpi_id => $achieve_val){
        // $kpi_id为对应指标ID,$achieve_val为该指标对应的输入值
        $value[] = "('{$kpi_id}', '{$achieve_val}')";
    }
    $values = implode(", ", $value);
    echo 'Your value is '.$values. '<br>';
}

// 生成动态表单部分
$n = 0;
while ($row = mysqli_fetch_row($query)){ 
    $kpi_id = $row[0];
    $_SESSION['id_kpi'] = $kpi_id;
    echo '<tr>
            <td>
                <span class="textarea" role="textbox" name="kpi'. ++$n .'" contenteditable>'.$row[1].'</span>
            </td>
            <td>
                <span style="margin-left:30px;">
                <!-- 用KPI ID作为achievement数组的键,直接绑定对应关系 -->
                <input type="text" name="achievement['.$kpi_id.']" style="width:30%">
                </span>
            </td>
        </tr>';
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:54:03