通过帖子表单序列化发送数据

时间:2014-12-08 02:51:24

标签: php mysql arrays

我问这个问题,希望可以简化它。

我有一个自定义字段生成器(使用jquery),允许为特定项目设置价格。我需要发布值并将它们逐行插入MySQL表中,唯一ID(x)作为饮品名称和饮料价格之间的关系。

我最初的尝试是关于这些方面的事情

var max_fields      = 50; //maximum input boxes allowed
var wrapper         = $(".input_fields_wrap"); //Fields wrapper
var add_button      = $(".add_field_button"); //Add button ID

var x = 1; //initlal text box count
$(add_button).click(function(e){ //on add input button click
e.preventDefault();
if(x < max_fields){ //max input box allowed
x++; //text box increment
$(wrapper).append(''
+'<tr class="row_'+x+'">'
+'<td><select style="width:99%;" name="item[product]" ><?php echo $items;?></select></td>'
+'<td><input type="txt" name="item[price]"  class="input-small"><input type="hidden" name="item[id]"  class="input-small">'
+'<a href="#" class="remove_field pull-right"><span class="icon-cancel"></span></a>'
+'</td>'
+'</tr>');
}
});

当我在序列化输入后将其发布到服务器时,这是返回的内容

print_r($_POST['item']);

Array
(
    [0] => Array
        (
            [0] => Boags Draught 24 375ml
            [1] => Carlton Draught or VB 10/375ml
        )

    [1] => Array
        (
            [0] => 12.45
            [1] => 45.78
        )

    [2] => Array
        (
            [0] => 2
            [1] => 3
        )
)

如何在表格中插入饮品和唯一身份证?

1 个答案:

答案 0 :(得分:1)

在我们聊天之后,我们提出了解决方案。问题是OP如何将数据传递到服务器。我们必须将动态html输入名称更改为每个产品都是统一的

var max_fields = 50; //maximum input boxes allowed 
var wrapper = $(".input_fields_wrap"); //Fields wrapper 
var add_button = $(".add_field_button"); //Add button ID 

var x = 1; //initlal text box count 
$(add_button).click(function(e){ //on add input button click 
    e.preventDefault(); 
    if(x < max_fields){ //max input box allowed 
        x++; //text box increment 
        $(wrapper).append('' 
        +'<tr class="row_'+x+'">' 
        +'<td><select style="width:99%;" name="item['+x+'][]" ><?php echo $items;?></select> </td>' 
        +'<td><input type="txt" name="item['+x+'][]" class="input-small"><input type="hidden" name="item['+x+'][]" value="'+x+'" >'
        +'<a href="#" class="remove_field pull-right"><span class="icon-cancel"></span></a>' 
        +'</td>' 
        +'</tr>'); 
    } 
});

然后在POST $( "#form-package" ).serialize()中序列化表单的参数后,数据以这种格式发送

Array
(
    [2] => Array
    (
        [0] => Boags Draught 24 375ml
        [1] => 12
        [2] => 2
    )
    [3] => Array
    (
        [0] => Carlton Draught or VB 10/375ml
        [1] => 90
        [2] => 3
    )
)

像这样循环它,你将得到正确的解决方案

foreach($_POST['item'] as $data) { 
    $insert="INSERT INTO table (meta_id,meta_data) VALUES ('$data[2]','$data[0]')"; 
    $db->setQuery($insert); 
    $db->query(); 
}