我有这个表单,我需要提交一些带有隐藏值的问题并将它们全部链接在一起。
我目前使用问题的ID附加名称,然后添加_然后是答案数。
<form>
<span>1:Question goes here </span>
<input type=hidden name=t_1 value=10>
<input type=hidden name=f_1 value=20>
<input type=checkbox name=a1_1>value1
<input type=checkbox name=a1_2>value2
<input type=checkbox name=a1_3>value3
<span>2:Question goes here </span>
<input type=hidden name=t_2 value=40>
<input type=hidden name=f_2 value=20>
<select name=a2_1>
<option>blah</option>
<option>etc</option>
</select>
</form>
在服务器端,我爆炸提交的字段并将它们放在一起:
foreach ($_POST as $var => $val) {
switch ($var[0]) {
case "a" :
$b = substr($var, 1); // remove first char to get number following
$pos = strpos($b, "_");
if ($pos !== false) {
$i = explode("_", $b); // separating question number from choice number (for multi select questions)
$answer[$i[0]][] = $val;
break;
}
else {
$answer[$b][] = $val;
break;
}
case "t" :
$b = substr($var, 1);
$target[$b] = $val;
break;
}
}
有更好的方法吗?
答案 0 :(得分:2)
您可以按以下方式命名标记:
<input name="question[1][answer]" type="text" value="someValue" />
这将为您的问题创建数组,您可以通过它们进行迭代,而无需爆炸或子串。“
答案 1 :(得分:1)
您可以使用
f[] or f[1], f[2]
这样做,$ _POST将包含一个数组。