只有最后一个文本输入数组发送到php处理脚本

时间:2013-03-07 18:05:21

标签: php html codeigniter textinput

我正在尝试使用jquery为项目动态添加字段。我的问题是,当我将表单发送到处理脚本并在$ _POST ['item']上执行print_r()时,它只列出最后一个数组...

这是我的代码:

<div class="itemAdd row">
                            <div class="span4">
                                <p>Item Number: <br /><input class="span4" type="text" name="item[itemNumber]" /></p>
                                <p>Status: <br />
                                <select name="item[status]" class="span4">
                                    <option value="enabled" selected="selected">Enabled</option>
                                    <option value="disabled">Disabled</option>
                                    <option value="damaged">Damaged</option>
                                </select>
                                </p>
                            </div>
                            <div class="span4">
                                <p>Item Notes:<br /><textarea class="span4" style="height:100px;" name="item[notes]"></textarea></p>
                            </div>
                            <div class="clearfix"></div>
                            <hr />
                        </div>

此按钮可添加新字段:

<a href="#" class="btn btn-small btn-primary" id="addItem"><i class="icon-plus icon-white"></i> Add Item</a>

以下是添加新字段的jquery:

<script>
//Add Items
$('a#addItem').on('click', function(event) {

    event.preventDefault();
    $('#productItems').append('<div class="itemAdd row"><div class="span4"><p>Item Number: <br /><input class="span4" type="text" name="item[itemNumber]" /></p><p>Status: <br /><select name="item[status]" class="span4"><option value="enabled" selected="selected">Enabled</option><option value="disabled">Disabled</option><option value="damaged">Damaged</option></select></p></div><div class="span4"><p>Item Notes:<br /><textarea class="span4" style="height:100px;" name="item[notes]"></textarea></p></div><div class="clearfix"></div><hr /></div>');

});

2 个答案:

答案 0 :(得分:2)

您在表单字段中强制使用数组键,等等:

... name="item[itemNumber]" ...

itemNumber不是JS var,它是你附加的html blob中的文字html /属性文本。也许你的意思更像是

... name="item[' + itemNumber + ']" ...

代替。即使只是item[]也允许PHP自动为您分配数组键。但就目前而言,PHP将为您创建一个数组,但由于您的所有字段都使用了SAME密钥名称,因此您将不断覆盖值并最终只使用表单中的最后一个字段名称/密钥对。

答案 1 :(得分:2)

您在html中使用数组,但索引是一个字符串:

item[itemNumber]

所以每个项目都会覆盖前一个项目。

您可以将其更改为:

itemNumber[]

itemNote[]

或者,如果您有数字ID,则可以使用它。