我发现自己遇到了以下问题:我有一个包含随机数个字段的表单。(这是为了让用户可以输入他们团队成员的名字——团队没有设置大小。)我需要对输入的数据进行格式化,为存储在数据库中做准备。
数据库结构很好,只是得到一个随机数的$_POST
,并将它们放入一个数组中,这就是问题所在。
到目前为止,我已经有了一些javascript,它允许用户创建/删除无限数量的字段,并递增id
s/name
s(例如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";