2012-03-04 121 views
4

我的网站的用户可以生成自定义表单。所有字段都保存在具有唯一ID的数据库中。当有人访问表单,字段“name”属性是场* ID *,例如

<p>Your favorite band? <input type="text" name="field28"></p> 
<p>Your Favorite color? <input type="text" name="field30"></p> 

提交表格后,我用PHP来验证表单,但我不知道检索的价值$ _POST [field28](或该字段的任何数字)。

<? 
while($field = $query_formfields->fetch(PDO::FETCH_ASSOC)) 
{ 
$id = $field[id]; 

//this doesn't work!! 
$user_input = $_POST[field$id]; 

//validation comes here 
} 
?> 

如果有人能帮助我,真的很感谢!

回答

11

添加一些报价:

$user_input = $_POST["field$id"]; 
+0

好了现在我觉得愚蠢的,感谢的作品! – dirk 2012-03-04 03:21:53

5

我建议利用PHP数组的语法为形式:

<input type="text' name="field[28]" /> 

您可以$_GET['field'][28]

+0

不知道,更好的解决方案,将在下一个项目中使用。目前,我的网站的前端已经开发出来了,基于表单字段名称的各种jQuery操作,所以更改字段名称有点麻烦。使用Amber建议的代码有什么大缺点? – dirk 2012-03-04 03:26:39

+1

@Dirk Nope,Amber的解决方案没有任何问题。你似乎已经可以用你的'$ id'变量来定位特定的名字,所以你应该全部设置好。如果你没有'$ id',我的解决方案将允许你循环'$ _POST ['field']'就像抓住所有值的数组一样。 – 2012-03-04 03:28:54

3
$user_input = $_POST['field'.$id]; 
2

访问这个在PHP请记住,您正在使用string作为的第一部分名称,因此请尝试如下所示:$user_input=$_POST['field'.$id];。 另外,我建议称他们为array获取所有数据:

<?php 
    $user_inputs=array(); 
    while($field=$query_formfields->fetch(PDO::FETCH_ASSOC)) { 
     $id=$field['id']; 
     $user_inputs[]=$_POST['field'.$id]; 
    } 
?>