我在将数据插入数据库时出现问题。我使用添加按钮添加新文本框,第一个文本框的默认值为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,其他文本框值不发送。
答案 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;
}
}