【问题标题】:Posting data with multiple submit buttons in PHP在 PHP 中使用多个提交按钮发布数据
【发布时间】:2026-02-13 07:25:03
【问题描述】:

我的表单中有多个提交按钮,其中包含多个动态生成的隐藏值。问题是我在查看生成的 HTML 源代码时可以看到正确的值,但是提交一个按钮,提交所有其他值,only on actually submitted button I have on array key-value pair more than others。我已添加索引以区分提交的按钮。

代码生成按钮在这里:

<form action="shipment.php" method="POST"> 
            <?php 
            $index = 0;
            // get rates details array
            $rates = getRatesDetails($orderDetails);
            //$orderDetails = array();

            //$orderDetails['test_key'] = 'test_value';

            foreach ($rates as $key => $RateDetails) 
            {


            // end of PHP code
            ?>
            <div class="col-md-4">
            <button type="submit" class="shipping-option" name="orderDetails[<?php echo $index; ?>][shipping_option]" value="<?php echo $RateDetails['ServiceType']; ?>">
                <input type="hidden" name="orderDetails[<?php echo $index; ?>][shipping_delivery_time]" value="<?php echo $RateDetails['DeliveryTimestamp']; ?>">
                <input type="hidden" name="orderDetails[<?php echo $index; ?>][shipping_total_amount]" value="<?php echo $RateDetails['Amount']; ?>">
                <input type="hidden" name="orderDetails[<?php echo $index; ?>][shipping_total_currency]" value="<?php echo $RateDetails['Currency']; ?>">
                <ul>
                    <li>Service type: <span><?php echo $RateDetails['ServiceType']; ?></span></li>
                    <li>Estimated delivery time: <span><?php echo $RateDetails['DeliveryTimestamp']; ?></span></li>
                    <li>Total charge: <span><?php echo $RateDetails['Amount']; ?><?php echo $RateDetails['Currency']; ?></span></li>
                </ul>
            </button>
            </div>
            <?php
            $index++;

            } 
            ?>
        </form>

并且转储的 POST 数据在这里:

Array
(
    [0] => Array
        (
            [shipping_delivery_time] => 2015-11-24T08:00:00
            [shipping_total_amount] => 178.49
            [shipping_total_currency] => USD
        )

    [1] => Array
        (
            [shipping_option] => INTERNATIONAL_PRIORITY // actially selected option
            [shipping_delivery_time] => 2015-11-24T10:30:00
            [shipping_total_amount] => 128.91
            [shipping_total_currency] => USD
        )

    [2] => Array
        (
            [shipping_delivery_time] => 2015-11-27T16:30:00
            [shipping_total_amount] => 115.77
            [shipping_total_currency] => USD
        )

)

其实我只需要 $_POST[1] 数组,如何实现呢?如果我删除索引,我只会发布最后一个数组值。

【问题讨论】:

    标签: php html arrays forms post


    【解决方案1】:

    您必须为每个输入字段组添加新表单:

        <?php 
            $index = 0;
    
            $rates = getRatesDetails($orderDetails);
    
            foreach ($rates as $key => $RateDetails) 
            {
        ?>
        <div class="col-md-4">
            <form action="shipment.php" method="POST"> 
                <button type="submit" class="shipping-option" name="orderDetails[<?php echo $index; ?>][shipping_option]" value="<?php echo $RateDetails['ServiceType']; ?>">Submit</button>
                <input type="hidden" name="orderDetails[<?php echo $index; ?>][shipping_delivery_time]" value="<?php echo $RateDetails['DeliveryTimestamp']; ?>">
                <input type="hidden" name="orderDetails[<?php echo $index; ?>][shipping_total_amount]" value="<?php echo $RateDetails['Amount']; ?>">
                <input type="hidden" name="orderDetails[<?php echo $index; ?>][shipping_total_currency]" value="<?php echo $RateDetails['Currency']; ?>">
                <ul>
                    <li>Service type: <span><?php echo $RateDetails['ServiceType']; ?></span></li>
                    <li>Estimated delivery time: <span><?php echo $RateDetails['DeliveryTimestamp']; ?></span></li>
                    <li>Total charge: <span><?php echo $RateDetails['Amount']; ?><?php echo $RateDetails['Currency']; ?></span></li>
                </ul>
            </form>
        </div>
        <?php
            $index++;
    
            } 
        ?>
    

    【讨论】:

      最近更新 更多