1

これが私のフォームのスナップショットです。LPO の下の入力値 (1 列目) は非表示になっています。完全なフォームを示すためにここに表示しました。

ここに画像の説明を入力

color_id (入力ボックスの左端) が 37 の場合、その DB 値はBB552表示どおりです。3 の場合、その色の値は ですがBB110、0 の場合は、ユーザーがカスタムを選択し、3 行目に自分で値を書き込んだことを意味します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の場合、適切なサブカラー値を取得する可能性を知りたいです。

del sub colorこれまでのところ、サブカラー列に隠しフィールドを 2 つ追加してインデックスに一致させることを考えていましたが、これにはコードを完全に書き直す必要があります。

このフォームに多くの変更を加えないようにする他の方法はありますか?

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

もう 1 つのオプションは$j、ループの外で別のイテレータを宣言し、0 から開始して、サブカラーを読み取るたびにそのイテレータを手動でインクリメントすることです。次に、それは常に次にsubcolor_id読む必要があるもののインデックスになるはずです。

于 2013-02-26T06:24:30.393 に答える