-1

提交表单后,我花了一个小时用几乎空的 $_POST 挠头。有一个简单的数据网格,我选择一行,js填充所有输入,按钮将信息发送到edit.php

在表单中,每个输入(text/textarea/etc)的名称都像publication[image]publication[text]最后type="submit"name = "publication"。因为发布是当前表名、图像和文本 - 字段名。当前表可以是任何表。

有一些桌子一切都很好。但其中一些$_POST只给了我提交按钮名称和它的value = "Ok". 通过猴子方法,我发现如果我将提交按钮名称更改为“updaterow”之类的名称,那么$_POST任何表的填充都完全符合预期。

但是如果我遇到一个名为“updaterow”的表格,或者这样的“useful_name_for_submit_button”怎么办?

为什么我不能像其他输入一样命名按钮但没有方括号?以及为什么当我这样做时 $_POST 除了显示按钮名称之外什么都没有。我查看了 http 标头-它们都正确地转到了服务器。

我可以完全输入名称错误吗?提前谢谢。

4

3 回答 3

0

Change or delete your submit input's name

于 2013-07-30T09:41:44.503 回答
0

It has nothing to do with HTML or HTTP; this is how PHP handles PHP. You can't have two same keys into an associtavie array in PHP. If you do, the second one either replace the first one, or gets ignored.

In other words, you have to look at input names as PHP array keys (or 2D arrays, when you use square brackets).

于 2013-07-30T09:38:52.393 回答
0

对于文本、文本区域等输入类型元素,您将发布用作包含多个值的数组,而对于提交按钮,它不用作仅包含一个值的数组。所以 $_POST 值将返回最后的值。

如果在文本、文本区域等的顶部给出提交按钮,则 $_POST 值将返回数组值。

尝试为提交按钮使用不同的名称,或者使用提交按钮名称作为发布[提交]

<form name="form_submit" method="post" action="">           
<input type="text" name="publication[title]" />
<input type="text" name="publication[text]" />
<input type="submit" value="Submit" name="publication[submit]" />
</form>

这会将表单中的所有值返回为 Array ( [publication] => Array ( [title] => test [text] => test [submit] => Submit ) )

于 2013-07-30T10:03:40.040 回答