2

让我们开始告诉我,我正在通过表单中的 post 传递 x 数量的变量。
让我们将它们命名为menu_category_1, menu_category_2, ..., menu_category_x, 可能还有 menu_category_new (我使用 if empty 来检查最后一个变量)。

为了使事情更容易,我还发送了参数$key(从 0 开始的变量数量)。
现在我需要将它们设置为一个新变量$menu_category(数组),该变量将被内爆,然后更新我的数据库。

如何将该新$menu_category变量设置为包含开头命名的所有变量的数组?
我正在考虑使用 for 循环,但我想不出有用的东西。谢谢!!!


我最终采用了昆汀的方式,只需将 [] 添加到键中。我之所以选择这个只是因为它立即起作用。但是,我将深入研究 janenz00 的建议,我个人认为这是要走的路。感谢所有花时间经历这一切的人!!!!

4

5 回答 5

1

您将表单元素(所有相同类型的元素)命名为menu_category[](而不是menu_category_N)。

当你提交表单时,PHP 会自动将它们排列成一个数组!

于 2012-11-04T16:55:46.243 回答
1

在表单中使用[]语法是首选。

但是,如果您出于某种原因不想这样做,您可以这样做:

for ($x = 0; $x <= $_POST['key']; $x++) {
   $menu_category[] = $_POST["menu_category_$x"];
}
$menu_category[] = $_POST['menu_category_new'];
于 2012-11-04T16:57:55.213 回答
1

最好的方法是,当您发布信息时,像这样构造它。

<input type="text" name="cat_names[]" />
<input type="text" name="cat_names[]" />
<input type="text" name="cat_names[]" />

现在,当您发布数据时,变量 $_POST['cat_names'] 将包含 3 个元素。如果您有 4 个输入框,它将是一个 4 元素数组。

例子:

<input type="text" name="cat_names[]" value="a" />
<input type="text" name="cat_names[]" value="b" />
<input type="text" name="cat_names[]" value="echo" />
<input type="text" name="cat_names[]" value="kitten" />

发布数据

$_POST['cat_names'] = array('a', 'b', 'echo', 'kitten');

虽然没有说顺序会保持这样,但'b'可能在'a'之前。

但这取决于您是使用输入还是通过 JavaScript 进行。如果您使用 JS,您也可以发送其他信息,或者使用 JSON。

于 2012-11-04T17:00:53.433 回答
1

正如上面每个人所建议的那样,最好的方法是将表单本身的所有内容作为数组传递。如果您因任何原因无法修改当前代码,这就是您在当前场景中处理它的方式。

    $menu_category = array();
    for ($i = 1; $i <= $_POST['key']; $i++) {
        if (!empty($_POST['menu_category_'.$i]))
           $menu_category[] = $_POST['menu_category_'.$i];

    }
于 2012-11-04T17:05:30.523 回答
0

让我们为它们命名menu_category_1menu_category_2

您正在使用 PHP,所以让我们将它们命名为menu_category[0]menu_category[1]等(或menu_category[]menu_category[]等)。

然后$_POST['menu_category']or$_GET['menu_category']将是一个数组。

它将被内爆然后更新我的数据库

规范化您的数据库。使用外键和第二个表来表达您的一对多关系,而不是通过存储 CSV 数据。

于 2012-11-04T16:55:22.380 回答