在表中插入多行

时间:2016-06-05 05:34:01

标签: php html mysql mysqli

我在将数据插入数据库时​​出现问题。我使用添加按钮添加新文本框,第一个文本框的默认值为10,一旦点击添加按钮,然后下一个文本框将添加值,例如20,30,....每个文本框都有自己的值。并使用提交按钮将其单个文本框值一次性发送到同一个表。这里代码:

//insert into database-Line Item Data
$itemlist = '';
$more = TRUE;
$i=1;
while ($more) {
    if (isset($_POST['lineitem_'.$i])) {
        $itemlist .= $_POST['lineitem_'.$i];
        $itemlist .= "<br />";
    } else {
        $more = FALSE;
    }
    $i++;
}
$query_line_item = "INSERT INTO tbl_order_item (item) values ('$itemlist')";
$result_line_item = mysqli_query($con, $query_line_item);

代码只发送第一个文本框值为10,其他文本框值不发送。

2 个答案:

答案 0 :(得分:2)

您必须使用文本框名称数组来获取所有文本框的值,为此,请将此名称(name="lineitem[]")放在您生成的所有文本框中,并在提交数据时获得一组值,然后在php脚本使用foreach循环循环遍历数组,并在foreach循环中运行该插入查询,这样您将同时获得表中文本框的所有值。

使用此链接作为参考:

https://www.sanwebe.com/2013/04/capture-array-values-from-dynamic-input-fields-using-php

答案 1 :(得分:0)

我更喜欢将其保存在数组中,然后使用serialize存储在数据库中。当您想要检索时,可以对其进行反序列化并使用它。

$itemlist = array();
$more = TRUE;
$i=1;
while($more)
{
    if (isset($_POST['lineitem_'.$i]))
    {
        $itemlist[]= $_POST['lineitem_'.$i];
    }else
    {
        $more = FALSE;
    }
$i++;
}
$itemlist = serialize($itemlist);//serialize to store an array in database
$query_line_item = "INSERT INTO tbl_order_item (item) values ('$itemlist')";
$result_line_item = mysqli_query($con, $query_line_item);

当您想要检索并使用它时,只需使用

$itemlist = unserialize($itemlist);//unserialize to use as an array

根据您的最新代码编辑: 我想这个代码中的某个地方定义了$ add_nr

    $line_item = ''; 
     $more = TRUE; 
    for ($i=0; $i<5; $i++) 
    { 
    if((isset($_POST['lineitem_'.$i])) && ($_POST['lineitem_'.$i] !="") && isset($_POST['materialcode_'.$i]) && isset($add_nr))
    { 
    $line_item = $_POST['lineitem_'.$i]; 
    $materialcode = $_POST['materialcode_'.$i]; 
    $query_line_item = "INSERT INTO tbl_order_item (order_number, item, material) 
values ('$add_nr', '$line_item', '$materialcode')"; $result_line_item = mysqli_query($con, $query_line_item); 
    }else { 
    $more = FALSE; 
    } 
    }