为数据库准备的FORM字段的随机数


Random number of FORM fields being prepared for database

我发现自己遇到了以下问题:我有一个包含随机数个字段的表单。(这是为了让用户可以输入他们团队成员的名字——团队没有设置大小。)我需要对输入的数据进行格式化,为存储在数据库中做准备。

数据库结构很好,只是得到一个随机数的$_POST,并将它们放入一个数组中,这就是问题所在。

到目前为止,我已经有了一些javascript,它允许用户创建/删除无限数量的字段,并递增ids/names(例如TeamMemberName1、TeamMemberEmail1、TeammemName2、TeamMemberEmail2等)。

现在,我已经创建了一系列丑陋的PHP语句,这些语句将合理数量的POST-ed数据放入一个多维数组中——我不明白为什么一个团队应该大于50——然后我将处理该数组,在将其传递到数据库之前删除所有空行。

示例:

    $submittedTeamMembers = 
      array ( "teamMember1" => 
          array ( "name" => $_POST["teamMemberName1"],
                  "email" => $_POST["teamMemberEmail1"])
             );

但我猜还有更好的办法!

您的输入名称可以是数组形式,PHP将完全理解这一点。示例:

<input type="text" name="teamMembers[0]['name']" />
<input type="text" name="teamMembers[0]['email']" />

正如你所期望的,PHP会在发布后解释:

//print_r($_POST['teamMembers']);
Array
(
    [0] => Array
        (
            [name] => foo
            [email] => bar
        )
)

只需为所有字段指定一个名称"TeamMemberName[]"或"TeamMemberEmail[]"。无论值是否存在,都应该发布每个值,因此它们应该始终匹配。

这将把它们作为一个数组传递给服务器端的PHP脚本,这样您就可以像这样访问它们:

$teamMemberNames = $_POST["teamMemberName"];
$teamMemberEmails = $_POST["teamMemberEmail"];
for ($i = 0; $i < count($teamMemberNames); $i++)
    echo "name = {$teamMemberNames[$i]}, email = {$teamMemberEmails[$i]}'n";