在数据库中插入数组

时间:2015-07-02 12:30:58

标签: php mysql arrays forms

关于将数据插入数据库,我遇到了一个小问题。我会尝试尽可能准确地解释数据。

我正在制作一个表单制作者,我已经有了一个(糟糕的做法)实现,因此我将其重写为更好的实现。

表:

app_forms
- id
- name

app_questions
- id
- form_id
- type
- name 
- label
- placeholder
- order

app_possible_answers
- id
- vraag_id
- label
- value
- order

这些是我创建表单的表格。我认为它说明了它是如何运作的。我首先在app_form中创建表单,并且有问题(app_questions)链接到表单,app_possible_answers用于选择,广播和复选框类型的问题。

如果选择将textfield元素添加到表单中,则下面是textfield元素的片段:

<div class="input-group">
    <span style="width:15%" style="width:15%" class="input-group-addon" id="basic-addon1">Name</span>
    <input type="text" name="textfieldname[]" class="form-control" placeholder="Field tablename" aria-describedby="basic-addon1" required />
    <span class="input-group-addon" id="questionfornametextfield">?</span>
</div>
<div class="input-group">
    <span style="width:15%" class="input-group-addon" id="basic-addon2">Label</span>
    <input name="textfieldlabel[]" type="text" class="form-control" placeholder="Label" aria-describedby="basic-addon2" required />
    <span class="input-group-addon" id="questionforlabeltextfield">?</span>
</div>
<div class="input-group">
    <span style="width:15%" class="input-group-addon" id="basic-addon3">Placeholder</span>
    <input name="textfieldplaceholder[]" type="text" class="form-control" placeholder="Placeholder" aria-describedby="basic-addon3" required />
    <span class="input-group-addon" id="questionforplaceholdertextfield">?</span>
</div>

正如您所看到的,我给输入后面带有[]的名称,因此它被放入一个数组并发送到服务器。这样我可以确保多个文本字段彼此区分,并且我可以在表单中添加多个文本字段。

我现在陷入困境的是我需要将它插入到我的数据库中,就像我如何将数组中的数据组合在一起以便插入正确。

这是发送的对象。这是一个包含2个文本字段的表单,我用JSON对其进行了字符串化,以便更具可读性:

[
  {
    "name": "formname",
    "value": "Formname"
  },
  {
    "name": "textfieldtype[]",
    "value": "textfield"
  },
  {
    "name": "textfieldname[]",
    "value": "name textfield one"
  },
  {
    "name": "textfieldlabel[]",
    "value": "label textfield one"
  },
  {
    "name": "textfieldplaceholder[]",
    "value": "placeholder textfield one"
  },
  {
    "name": "textfieldtype[]",
    "value": "textfield"
  },
  {
    "name": "textfieldname[]",
    "value": "name textfield two"
  },
  {
    "name": "textfieldlabel[]",
    "value": "label textfield two"
  },
  {
    "name": "textfieldplaceholder[]",
    "value": "placeholder textfield two"
  }
]

但是如何确保将正确的数据分组并插入app_questions表中。我在PHP中使用了这段代码,但是我被卡住了:

//formname
foreach($formelementen as $key => $value)
{
    //get form name
    if($key == 'formname')
    {
        echo $value . "\n";
    }   


}

提前致谢。

1 个答案:

答案 0 :(得分:0)

我解决了自己的问题。我将每个字段更改为相同的名称,因此对于每种类型(是textarea,textfield等),所以它的类型[],名称[],

我使用for循环来计算数组并​​检查。