我有一个表单,它传递以下值:
image_title,
image_description,
image_file
我想多次呈现此表单,因此我执行了以下操作:
image_title_1,
image_description_1,
image_file_1
image_title_2,
image_description_2,
image_file_2
多次,所以我有1到10个字段。我提交表单并打印出POST数组的内容,唯一的问题是数组中不存在“image_title_1”之后的任何“image_title_#”:但其他一切都有。
所以数组看起来像:
image_title_1 -> "title!"
image_description_1 -> "description!"
image_file_1 -> file
image_description_2 -> "description!"
image_file_2 -> file
image_description_3 -> "description!"
image_file_3 -> file
所以要弄清楚它是什么我互相交换了描述和标题,但是标题仍然没有在1之后显示。我没有做任何处理,我实际上只是打印出$ _POST数组之前甚至触摸它。这没有任何意义,可能是什么导致它?
澄清:问题是“image_title_#”(例如:image_title_3)除了image_title_1之外没有通过,即使我重新安排了订单。在输出之前我没有处理。
编辑,html源只是:
<form method="post" action="">
<input type="text" name="image_title_1"></input>
<input type="text" name="image_description_1"></input>
<input type="text" name="image_file_1"></input>
<input type="text" name="image_title_2"></input>
<input type="text" name="image_description_2"></input>
<input type="text" name="image_file_2"></input>
<input type="text" name="image_title_3"></input>
<input type="text" name="image_description_3"></input>
<input type="text" name="image_file_3"></input>
<input type="submit" name="submit" value="submit"></input>
</form>
答案 0 :(得分:2)
更好的解决方案是将它们转换为数组,试试这个:
<form method="post" action="">
<input type="text" name="image_title[]"></input>
<input type="text" name="image_description[]"></input>
<input type="text" name="image_file[]"></input>
<input type="submit" name="submit" value="submit"></input>
</form>
现在,在您的PHP脚本中,您可以获得这样的数组:
print_r($_POST['image_title']);
print_r($_POST['image_description']);
print_r($_POST['image_file']);
使用[]
的后缀字段名称将其转换为数组。这里的另一个好处是它也缩短了你的代码。
获得数组后,可以使用foreach
:
foreach($_POST['image_title'] as $key => $value)
{
// process them any way you want
}
答案 1 :(得分:0)
代码有效。我只是剪切并粘贴您的表单并进行测试提交
Array
(
[image_title_1] => 1
[image_description_1] => 2
[image_file_1] => 3
[image_title_2] => 4
[image_description_2] => 5
[image_file_2] => 6
[image_title_3] => 7
[image_description_3] => 8
[image_file_3] => 9
[submit] => submit
)