0

如何从以特定名称开头的提交表单中循环 2 个值,将其插入 mysql 表行并循环获取更多信息?

我有一个包含许多输入选择和文本区域的帖子表单,在该表单的一部分中有 2 个字段(链接、描述)然后我有一个按钮,它生成一个具有相同字段的额外行,但在中添加数字 1 2 3姓名。因此,当我单击以生成这两个字段的新行时,它的外观如下:

<label for="stack_input"><input id="stack_input" name="extravalue" value="" type="text"></label>
<label for="flow_input"><input id="flow_input" name="secondextravalue" value="" type="text"></label>

<label for="stack_input"><input id="stack_input" name="extravalue1" value="" type="text"></label>
<label for="flow_input"><input id="flow_input" name="secondextravalue1" value="" type="text"></label>

<label for="stack_input"><input id="stack_input" name="extravalue2" value="" type="text"></label>
<label for="flow_input"><input id="flow_input" name="secondextravalue2" value="" type="text"></label>

现在我将表单与表单的其余输入和文本区域一起发布,但我希望一次将每 2 个额外字段添加到新的数据库行中,作为每次添加到同一行的一对。现在我可以创建一个 foreach,但我一次只能将 2 个字段中的 1 个添加到新表行中。

这是使 1 个字段发生这种情况的代码。我对 php 说要获取所有以“extravalue”开头的帖子数据,这是两个(对生成的)输入字段中的第一个,每次找到一个帖子值都以“extravalue”开头,然后插入表中。因为每次我生成一个新行时,这两个输入字段的基本名称分别为“extravalue”和“secondextravalue”,并且每次在名称末尾添加数字 1 2 3 等。这里的代码:

    foreach($_POST as $key => $value) 
    {
        if (strpos($key, 'extravalue') === 0) 
    {

    mysql_query("INSERT INTO tablename VALUES ('','','$value','','','')")or die("ADD Error: ".mysql_error());

    }
    }

现在我想获取每对生成的输入字段并在同一行中插入数据库。

所以我想做以下事情:

对于每一个,

"extravalue" "secondextravalue"
"extravalue1" "secondextravalue1"
"extravalue2" "secondextravalue2"

mysql_query("INSERT INTO tablename VALUES ('','','$value','$value2','','')")or die("ADD Error: ".mysql_error());
mysql_query("INSERT INTO tablename VALUES ('','','$value','$value2','','')")or die("ADD Error: ".mysql_error());
mysql_query("INSERT INTO tablename VALUES ('','','$value','$value2','','')")or die("ADD Error: ".mysql_error());

简而言之,我想对 php 说,每次你找到以“extravalue”和“secondextravalue”开头的值时,将它们插入到同一个表行中,然后循环继续搜索下一对开始的两个值同名。

4

1 回答 1

1

不要这样做,而是将字段名创建为数组: name="extravalue[]"

这将在 $_POST 的数组中为您提供所有额外的值,使您可以轻松地循环它们,也可以轻松地插入它们。在循环中添加一个计数器 ($i++;),这样您也可以轻松获得第二个额外值。

于 2013-10-14T20:24:56.420 回答