在PHP中从动态表单向数据库添加行

时间:2015-06-02 20:54:58

标签: php mysql

我有一个表单来索引属于原理图的部件。我们有数百张图纸,每张图纸都附有不同数量的零件。每个部分都需要三个信息,一个是number,part_id和Description。初始表单捕获该表单并允许用户向表单添加尽可能多的行,以便从图形中获取所有部件。表单字段名为Number_1,Part_id_1和Description_1。添加到表单的每一行都会将结尾处的数字增加一。例如,如果原理图有10个部分,我将以Number_1 - Number_10结束。

while ($i <= $Fieldnum) {
             $Number = "Number_".$i;
             $PartNumber = "PartNumber_".$i;
             $Description = "Description_".$i;
             print ("
           <input name=$Number type=\"text\" size=\"3\" />
           <input name=$PartNumber type=\"text\" size=\"20\"  />
           <input name=$Description type=\"text\" size=\"35\" />
                    ");
             $i++;
            }

我遇到的问题是将数据导入MySQL数据库。每个表单行都需要成为数据库中的一行。如果这是一个静态表单,那将很容易,但每个表单元素都有一个动态名称,我不知道如何继续。

2 个答案:

答案 0 :(得分:0)

使用两张桌子。为原理图创建一个表。为部件创建一个表,并为外键指定原理图的id。

答案 1 :(得分:0)

有一种更好的方法可以做到这一点。

为添加[]的给定元素赋予所有输入相同的名称,使其最终成为阵列服务器端。

以下是一个例子:

<input name='number[]' .../>
<input name='part_number[]' .../>
<input name='description[]' .../>

你可以随心所欲地拥有这些......

然后服务器端只是迭代它们:

for($i=0; $i<count($_POST['number']); $i++){
    $row = array();
    $row['number'] = $_POST['number'][$i];
    $row['part_number'] = $_POST['part_number'][$i];
    $row['description'] = $_POST['description'][$i];
    //do your mysql insert here.
}