让我们开始告诉我,我正在通过表单中的帖子传递x个变量
我们将它们命名为menu_category_1
,menu_category_2
,...,menu_category_x
,加上,也许,menu_category_new(我使用if if来检查最后一个变量)。
为了方便起见,我还发送参数$key
(从0开始的变量数量)
现在我需要将它们设置为一个新的变量$menu_category
(数组),它将被内爆,然后更新我的数据库。
如何将新的$menu_category
变量设置为包含我在开头命名的所有变量的数组?
我正在考虑使用for循环,但我无法想出一些有用的东西。
感谢!!!
我最后走了Quentin的方式,只需在键上添加[]。我选择它只是因为它立即起作用。然而,我将深入研究janenz00的消化,我个人认为这是可行的方法。 感谢所有花时间经历这一切的人!!!!
答案 0 :(得分:1)
我们将它们命名为
menu_category_1
,menu_category_2
您正在使用PHP,因此我们将其命名为menu_category[0]
,menu_category[1]
等(或menu_category[]
,menu_category[]
等)。
然后$_POST['menu_category']
或$_GET['menu_category']
将是一个数组。
将被内爆,然后更新我的数据库
规范化您的数据库。使用外键和第二个表来表达您的一对多关系,而不是通过存储CSV数据。
答案 1 :(得分:1)
您将表单元素(所有相同类型的元素)命名为menu_category[]
(而不是menu_category_N
)。
当您提交表单时,PHP会自动将它们排列成一个数组!
答案 2 :(得分:1)
目前,首选使用表单中的[]
语法。
但是,如果您因某些原因不想这样做,可以这样做:
for ($x = 0; $x <= $_POST['key']; $x++) {
$menu_category[] = $_POST["menu_category_$x"];
}
$menu_category[] = $_POST['menu_category_new'];
答案 3 :(得分: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。
答案 4 :(得分:1)
如上所述,最好的方法是将所有内容从表单本身传递为数组。如果由于任何原因无法修改当前代码,则可以在当前方案中处理它。
$menu_category = array();
for ($i = 1; $i <= $_POST['key']; $i++) {
if (!empty($_POST['menu_category_'.$i]))
$menu_category[] = $_POST['menu_category_'.$i];
}