在提交表单后,我花了一个小时的时间抓住我的头几乎是空的$ _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标头 - 它们都正确地进入了服务器。
输入名称是否完全错误?谢谢你。
答案 0 :(得分:0)
它与HTML或HTTP无关;这就是PHP处理PHP的方式。 PHP中的associtavie数组中不能有两个相同的键。如果你这样做,第二个要么替换第一个要么被忽略。
换句话说,您必须将输入名称视为PHP数组键(或使用方括号时的2D数组)。
答案 1 :(得分:0)
更改或删除提交输入的名称
答案 2 :(得分:0)
对于输入类型元素,如text,textarea等,您使用publication作为数组,它将保存多个值,而对于提交按钮,它不会被用作仅包含一个值的数组。所以$ _POST值将返回表格中最后的值。
如果在text,textarea等的顶部给出了提交按钮,$ _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] =&gt;数组([title] =&gt; test [text] =&gt; test [提交] =&gt;提交))