2012-03-04 11 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

[OK]を、今私は、作品のおかげで愚かな感じ! – dirk

5

私は、フォームのためのPHPの配列構文を利用することをお勧めしたい:

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

あなたは$_GET['field'][28]

+0

次のプロジェクトでは、はるかに良いソリューションであることを確信しています。現時点では、私のウェブサイトのフロントエンドはすでに開発されており、フォームフィールド名に基づいたあらゆる種類のjqueryアクションがあるので、フィールド名を変更するのはちょっと面倒です。 Amberが提案したコードを使用することの大きな欠点は何ですか? – dirk

+1

@Dirkいいえ、Amberのソリューションには何も間違っていません。あなたは '$ id'変数で特定の名前をすでにターゲットにできるように思われるので、すべて設定する必要があります。あなたが '$ id'を持っていなかったら、私の解決策は' $ _POST ['field'] 'をループさせて、配列がすべての値を取得するようにします。 –

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]; 
    } 
?> 
関連する問題