3

注文を編集するフォームがあります。注文の編集ページで、注文を分類しています。たとえば、注文の詳細 (顧客名、住所など) を入力してから、次のような注文項目を入力します。

注文詳細:

     <form name="edit_order" id="edit_order" method="post">
      <? 
     if ($order_details) {
                //    print_array($order_details);
                    foreach ($order_details as $key => $link) {
                    ?>
                    <div width="200">
                        <div><b>Product: </b> <br><?=$link->product_name?> - <?=$link->product_id?></div>  
                        <div><strong>Cost:</strong><br>&pound;<?=$link->unit_cost?></div>
                        <div><strong>Pack Qty:</strong><br><input name="quantity" id="quantity" value="<?=$link->quantity?>" style="width:50px;"   /> </div> 
                        <div><strong>Pack Cost:</strong> <br><input name="pack_cost" id="pack_cost" value="<?=$link->pack_cost?>" style="width:50px;" />   </div>
                           <div><strong>Pallet Qty:</strong><br><input name="pallet_quantity" id="pallet_quantity" value="<?=$link->pallet_quantity?>" style="width:50px;" />  </div>
                           <div><strong>Pallet Cost:</strong><br><input name="pallet_quantity" id="pallet_quantity" value="<?=$link->pallet_unit?>" style="width:50px;" />  </div>

                    </div>
                    <?
                    }
                }
           ?>

私の質問は:

次のページで複数のフィールド (入力ボックス) のこれらの値を取得するにはどうすればよいですか?

たとえば、注文の編集ページで 10 個の製品の "pallet_quantity" と "pack_cost" を編集した場合、ループを使用して次のページでそれらを取得してデータベースに保存するにはどうすればよいですか?

このようにWebページに値を表示しようとすると print($_POST['pack_cost'])、単一の値が返されます.POST配列をループして、編集した値を表示してデータベースに保存するにはどうすればよいですか?. 助けてください。

4

3 に答える 3

4

入力値の配列を作成できます。以下のコードを見てください...

<input name="pack_cost[]" id="pack_cost1" value="<?=$link->pack_cost?>" style="width:50px;" />
<input name="pack_cost[]" id="pack_cost2" value="<?=$link->pack_cost?>" style="width:50px;" />
<input name="pack_cost[]" id="pack_cost3" value="<?=$link->pack_cost?>" style="width:50px;" />

これらの入力ボックスの ID は異なる必要があることに注意してください。

したがって、次のページでecho $_POST['pack_cost']を作成すると、キーと値を含むpack_costという名前の配列が取得されます。

編集済み

コード全体:-

<form name="edit_order" id="edit_order" method="post">
<? 
if ($order_details) {
     //    print_array($order_details);
     foreach ($order_details as $key => $link) {
?>
    <div width="200">
        <div><b>Product: </b> <br><?=$link->product_name?> - <?=$link->product_id?></div>  
        <div><strong>Cost:</strong><br>&pound;<?=$link->unit_cost?></div>
        <div><strong>Pack Qty:</strong><br><input name="quantity[]" id="quantity<?php echo $key; ?>" value="<?=$link->quantity?>" style="width:50px;"   /> </div> 
        <div><strong>Pack Cost:</strong> <br><input name="pack_cost[]" id="pack_cost<?php echo $key; ?>" value="<?=$link->pack_cost?>" style="width:50px;" />   </div>
        <div><strong>Pallet Qty:</strong><br><input name="pallet_quantity[]" id="pallet_quantity<?php echo $key; ?>" value="<?=$link->pallet_quantity?>" style="width:50px;" />  </div>
        <div><strong>Pallet Cost:</strong><br><input name="pallet_quantity[]" id="pallet_quantity<?php echo $key; ?>" value="<?=$link->pallet_unit?>" style="width:50px;" />  </div>
    </div>
 <?
    }
 }
 ?>
</form>

これは、あなたのニーズを出力するものです。

以下は、戻り値を取得するためのコードです

if($_POST)
{
    $field_array = array();
    for( $i=0 ; $i < count($_POST['pack_cost']) ; $i++ )
    {
        $field_array[$i]['quantity']        = $_POST['quantity'][$i];
        $field_array[$i]['pack_cost']       = $_POST['pack_cost'][$i];
        $field_array[$i]['pallet_quantity'] = $_POST['pallet_quantity'][$i];
        $field_array[$i]['pallet_cost']     = $_POST['pallet_cost'][$i];

        // if you require then the query for your database
    }
}
于 2012-12-17T11:50:42.793 に答える
1

私が理解している限り、あなたはこれをしたいです:

foreach ($_POST as $tag => $value) {
// Do whatever you want with the params
}
于 2012-12-17T11:46:50.863 に答える
0

セッション レベル ストレージを使用する

(i.e) $_SESSION[ID][field1], $_SESSION[ID][field2], $_SESSION[ID][field3]

他のフィールドを取得するためにあるページから別のページに移動しているときに、前のページのデータを 1 つのセッション ID で SESSION に保存し、次の次のページで同じことを行います..ただし、1 つのフォーム全体に同じセッション ID を使用します...次または最後のページに表示した後...または、データをセッション変数から(プロセスの最後に)DBに保存する必要がある場合は、idを含むすべてのセッションデータを設定解除/削除します...

Codeigniter では、これらの概念にセッション ライブラリを使用します...セッション変数への値の代入と取得を参照してください。

CodeIgniter セッション

于 2012-12-17T12:01:46.307 に答える