如何存储多维表格数据?

时间:2011-06-06 23:10:40

标签: php javascript html forms

我有一个表单,其中字段通过JavaScript添加。通过使用字段的数组名称,这很容易存储而没有一堆额外的JS代码(用于删除和重新排序)。

<input type="text" name="product[]" />

当我需要一个多维排列的表单数据列表时,问题出现了。

order
  request_date
  product[]
  quantity[]
    warehouse1
    warehouse2
    etc...

基本上,每个订单都有订单数据,多个产品,每个产品系列都可以从一个或多个仓库中提取。如果订单项的订单数量为100,并且第一选择仓库只有50个单位,他们将需要选择一个二级仓库来获得第二个50个单位...

我试图将这一切都放到一个页面上,可能有JS弹出窗口在不同的仓库之间进行选择。

问题在于,我试图想出一种将此信息发送到服务器的好方法。

我想使用排列的订单项信息,但无法弄清楚如何将每个订单项的多个仓库发送回服务器。我应该在隐藏字段(由JS仓库选择弹出窗口填充)中执行类似逗号分隔值的操作吗?有没有更好的办法?任何建议赞赏。感谢。

如果重要,后端就是PHP。

4 个答案:

答案 0 :(得分:1)

为什么不使用JSON?在PHP端,您最终会得到嵌套数组的元素数组。

听起来像你要么不知道JSON(以及3k的SO代表,我无法相信),或者你不知道你可以将JSON传回服务器。

但是对于你所描述的内容,这听起来像是一种自然而完美的契合。


“将该数组元素作为对象粘贴到返回值”

var returnObject = { field1: "value", field2: "value" };
var buildArray = [];
$(specificSelector).each(function(){
  buildArray.push($(this).data('myKey'));
});
returnObject.field3 = buildArray;
  • 请注意,这会使用丑陋且令人讨厌的.each。如果你想要速度或清洁,有更好的方法来做到这一点。但这很有效。
  • 请注意,我没有对此进行全面测试,这是我的头脑,是为了演示概念。
  • 请注意,我假设每个要选择的对象都有一个与.data关联的关键字'myKey'。你可以改为在表格中的每个单元格上,或者其他什么。这就是 I 这样做的方式,并且可能会导致膨胀的页面。但是,当我追加一行时,我将值附加为一个对象,这样我就可以更快地完成这类事情(更快地输入)

答案 1 :(得分:1)

以JSON发回。

order: {
    request_date: '07/06/2011',
    products: [
    {
        id: 1,
        quantity: 3,
        warehouses: [1]
    },
    {
        id: 2,
        quantity: 4,
        warehouses: [1,2]
    },
    {
        id: 3,
        quantity: 5,
        warehouses: [3]
    }]
}

答案 2 :(得分:1)

尝试:

<input name="order[product][]" value="" />
<input name="order[product][]" value="" />
<input name="order[product][]" value="" />
etc...

答案 3 :(得分:-1)

您可以为所有仓库使用多选框。如果您还需要指定每个仓库的单位数,那么这不起作用。你可以这样做:

<select name="order4quantity2warehouse">
  <option>Warehouse 1</option>
  <option>Warehouse 2</option>
</select>
<input name="order4quantity2warehouse-quantity" />

然后在服务器大小上解码$ _POST以将所有数据精确到数组中。例如,您可以通过循环$ _POST的键并确定密钥匹配的模式(例如,订购[编号]数量[编号]仓库,然后将其插入阵列中的适当位置。