1

这是我的表格的快照。LPO(第一列)下的输入值是隐藏的,我只是在这里显示它们以显示完整的形式。

在此处输入图像描述

如果 color_id(最左边的第一个输入框)为 37,则其 DB 值BB552与显示的一样。如果为 3,则该颜色的值为BB110,但为 0 时,表示用户选择了自定义,并在第三行中自己写入了一个值FFBBBAA

我需要将表单提交给 PHP

字段名称如下

color_id[] <-- Hidden input
order_id[] <-- Hidden input
subcolor_id[] <-- Select
subcolor_string[] <-- Input
material_id[] <-- Select
weight[] <-- input

当我在 PHP 中发布表单时

<?PHP

$count = count($_POST['weight']);

for($i = 0; $i < $count; $i++){
    $color_id = $_POST['color_id'][$i];
    $order_id = $_POST['order_id'][$i];
    $material_id = $_POST['material_id'][$i];
    $weight = $_POST['weight'][$i];

    // i can count one post item and can iterate over all.

    if($color_id == 0){
       $color_id = $_POST['subcolor_id'][$i]; // this give me wrong result;
    }
    
}

因此,当 0 存在时,管理员批准此表单,可以将其保留为自定义或将颜色更改回 DB 中的某个值

color_id如果第一个隐藏输入为 0,我想知道获得正确子颜色值的可能性是什么。

到目前为止,我想到的一个是在 Sub Color 列中添加两个隐藏字段以匹配它们的索引,但这需要我完全重新编写del sub color代码

有没有其他方法可以让我免于对该表格进行大量修改?

4

2 回答 2

3

正如 eds 所提到的,这完全有道理。你应该这样做

$j=0;
$count = count($_POST['weight']);

for($i = 0; $i < $count; $i++){
$color_id = $_POST['color_id'][$i];
$order_id = $_POST['order_id'][$i];
$material_id = $_POST['material_id'][$i];
$weight = $_POST['weight'][$i];

// i can count one post item and can iterate over all.

if($color_id == 0){
   $color_id = $_POST['subcolor_id'][$j]; // this give me wrong result;
   $j++;
}

}

这解决了你的问题..

于 2013-02-26T06:29:41.477 回答
2

您的另一个选择是$j在循环之外声明另一个迭代器,从 0 开始,并在每次读取子颜色后手动递增该迭代器。那么它应该始终是subcolor_id您需要阅读的下一个索引。

于 2013-02-26T06:24:30.393 回答