从没有javascript的HTML表单发布数组

2022-08-30 07:23:53

我有一个有点复杂的表单,我希望通过本机POST元组数组来简化服务器端(PHP)处理。

表单的第一部分表示用户

  • 名字
  • 电子邮件
  • 地址

窗体的第二部分表示一棵树

  • 水果
  • 高度

问题是我需要能够以相同的形式为单个用户发布多个。我想以具有树数组的单个用户身份发送信息但这可能太复杂而无法与表单一起使用。唯一想到的是使用javascript创建一些带有User对象和树对象数组的JSON消息。但是最好避免使用javascript来支持更多的用户(有些人关闭了脚本)。


答案 1

看看这个。

<input type="text" name="firstname">
<input type="text" name="lastname">
<input type="text" name="email">
<input type="text" name="address">

<input type="text" name="tree[tree1][fruit]">
<input type="text" name="tree[tree1][height]">

<input type="text" name="tree[tree2][fruit]">
<input type="text" name="tree[tree2][height]">

<input type="text" name="tree[tree3][fruit]">
<input type="text" name="tree[tree3][height]">

它应该在$_POST[]数组中像这样结束(PHP格式便于可视化)

$_POST[] = array(
    'firstname'=>'value',
    'lastname'=>'value',
    'email'=>'value',
    'address'=>'value',
    'tree' => array(
        'tree1'=>array(
            'fruit'=>'value',
            'height'=>'value'
        ),
        'tree2'=>array(
            'fruit'=>'value',
            'height'=>'value'
        ),
        'tree3'=>array(
            'fruit'=>'value',
            'height'=>'value'
        )
    )
)

答案 2

您还可以发布多个具有相同名称的输入,并通过向输入名称添加空方括号将它们保存到数组中,如下所示:

<input type="text" name="comment[]" value="comment1"/>
<input type="text" name="comment[]" value="comment2"/>
<input type="text" name="comment[]" value="comment3"/>
<input type="text" name="comment[]" value="comment4"/>

如果你使用 php:

print_r($_POST['comment']) 

你会得到这个:

Array ( [0] => 'comment1' [1] => 'comment2' [2] => 'comment3' [3] => 'comment4' )

推荐