无法添加在phpMyAdmin上输入的所有列

时间:2014-03-25 19:41:48

标签: php phpmyadmin

我创建了一个网页,我的客户可以在其中输入所有商品的详细信息,然后返回我的商店。我创建的方式是,1个客户可以输入一次他的个人详细信息,但可以添加他返回的任意数量的项目。我创建了一个“添加更多”按钮来完成这项工作。但是当我测试我的网站时,数据库只是输入最后一项,而不是存储以前的项目。

<script> $(function () {
    $('input.more').on('click', function () {
    var $table = $('#input_fields');
    var $tr = $table.find('tr').eq(0).clone();
    $tr.appendTo($table).find('input').val('');
    });
});
</script>

 <tr>
        <td width="33%"><label class="description" for="element_20">Manufacturer, Model, Serial # </label>
         </td>
        <td width="33%"><label class="description" for="element_10">Tag Number (If Any) </label>
        </td>
        <td width="33%"><label class="description" for="element_4">Item Description </label>
    </td>
      </tr>
      </table>
      <table id="input_fields" width="100%" border="0" cellpadding="4">
      <tr>
        <td width="33%"><input id="element_20" name="model" class="element text large" type="text" maxlength="255" value="<?php if($action != "add") echo $row["model"]; ?>"/></td>
        <td width="33%"><input id="element_10" name="tag" class="element text large" type="text" maxlength="255" value="<?php if($action != "add") echo $row["tag"]; ?>"/></td>
        <td width="33%"><input name="itemdesc" type="text" class="element text large" id="element_4" value="<?php if($action != "add") echo $row["itemdesc"]; ?>" /></td>
      </tr>

    </table>
<input class="more" type="button" value="Add more" name="addmore"/>       

<ul>
 <li class="buttons">
        <input id="saveForm" class="button_text" type="submit" name="Submit" value="Submit" />

在此,当客户输入项目详细信息,然后单击添加更多项并输入其他项目详细信息时。仅存储最后输入的项目详细信息。但我希望所有项目都存储并显示在DB上。

1 个答案:

答案 0 :(得分:0)

您最终只向服务器发布单个模型/标记/文本,因为每个输入元素副本都具有相同的name属性。当PHP尝试将发布的数据映射到$_POST时,它只会映射到$_POST中的单个模型/标记/ itemdesc键,因为输入名称相同。

解决此问题的最简单方法是在输入名称中使用数组访问表示法,例如model[]tag[]itemdesc[]。这将允许PHP为$_POST中的每个model / tag / itemdesc键组装一个值数组。

试试这个。在更改HTML代码之前,请在脚本开头添加var_dump($_POST)。运行多项测试用例并查看转储值。

然后更改为在HTML中使用数组访问表示法,并查看var_dump()给出的差异。