2012-03-04 126 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]; 
    } 
?>