使用PHP在多个帖子表单值上循环

时间:2012-12-17 11:42:56

标签: php codeigniter

我有一个表单,我正在编辑我的订单。在我的编辑订单页面上,我正在分解我的订单。例如,订单详情(客户名称,地址等),然后订购这样的项目:

订单明细:

     <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”,那么我如何使用循环将它们保存在数据库中以在下一页上检索它们?

当我尝试在网页上显示这样的值:print($_POST['pack_cost'])时,它给出了单值。如何循环POST数组以显示并将我编辑的值保存到数据库中? 帮帮我。

3 个答案:

答案 0 :(得分: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 的数组,其中包含键和值。

<强> EDITED

整个代码: -

<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
    }
}

答案 1 :(得分:0)

据我了解,你想这样做:

foreach ($_POST as $tag => $value) {
// Do whatever you want with the params
}

答案 2 :(得分:0)

使用会话级别存储

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

在从一个页面移动到另一个页面以获取其他字段时...您使用一个会话ID存储来自SESSION中上一页的数据..并且在下一个即将到来的页面中执行相同的操作..但使用相同的会话ID一个完整的Form ...在显示在下一页或最后一页之后......或者如果你需要将数据存储到DB(在流程结束时)来自会话变量并取消/删除所有那些会话数据,包括id,如果你不想要的话......

对于Codeigniter,您使用会话库来实现这些概念...请参阅为会话变量分配和检索值,

<强> CodeIgniter Session