2011-02-08 21 views
0

誰かがクイズを作成できるようにフォームを作成しました。すべての質問と回答はデータベースに保存されています。あなたがここにフォームの単純化されたバージョンを確認することができますラジオボタン、多次元配列、PHP

http://jsfiddle.net/superuntitled/uaTtx/4/

を各質問には、回答の無限の数を持つことができる、唯一の答えが正しいことができます。 「正しい」答えを示すために、私はラジオボタンを使用しています。

私が抱えている問題は、選択したラジオボタンだけがPHPコードに値を渡していることです。サンプルの$_POSTの値の配列を参照してください(この例では、「宇宙ステーションとは何ですか? ):正しい答えは「星間デポ」であったとしても

[text] => Array 
    (
     [0] => A cosmic hotel 
     [1] => An interstellar depot 
     [2] => A closet organizer 
    ) 

[correct] => Array 
    (
     [0] => 1 
    ) 

は、最初の答えは、「宇宙ホテルは、」この$_POSTアレイを介し正解Iループとして入力されます。これは、選択されたラジオボタンだけが値を渡すためです。

私のラジオの入力は次のようになります。

<input type="radio" name="answer[1][correct][]" value="1" /> 

括弧の最初のセットは、それが関連付けられている問題であり、この数は、各新しい質問でインクリメントされます。

どのように正しい答えを正しく設定するかに関するアイデアはありますか?

+0

あなたのリンクされた例は、ユースケースをクリアするには短すぎると単純すぎます。 (なぜこの質問が落とされたのか知りたいのですが) – mario

+0

'name =" answer [1] [correct] [] "' 'name =" answer [1] [correct] "' 、あなたはそれをより簡単に扱うことができます。 – drudge

答えて

1

さて、私は今それを得ると思います。しかし、私はあなたの問題を簡単に解決することはできません。

..[]構文は、配列のテキストフィールドを収集するために機能しますが、テキスト入力と無線入力の間には、の相関関係はありません。テキストフィールドanswer[1][text][235]とラジオanswer[1][correct][235]の名前を手動で付けなければなりません。

これには、PHP出力の列挙ループが必要です。また、明らかにDHTML/AJAXの "Add another answer/question"関数は既存のフィールドを解析し、最後の数値を数えなければなりません。

遅延ソリューションを保持する場合は、type=radioの代わりにtype=checkboxを使用する必要があります。これは提出時にすべてのフィールドを表示する唯一の方法なので、テキストフィールドとチェックボックスの自動...[]列挙が機能します。
DHTML/Javascriptトリッキーを使用すると、グループごとに1つのチェックボックスのみがいつでも選択できるようになります。 (=偽のラジオボタン)

3

はい、ラジオボタンはチェックされた値のみを送信します。これがポイントです。

このようなあなたの入力を行います。

<input type="radio" name="answer[1][correct]" value="1" /> 

その後、あなたはこのような配列取得します:

'answer' => array(
    1 => array(
     'text' => array(…), 
     'correct' => 1 
    ) 
) 

をし、正しい答えは簡単で拾うされています

$array['answer'][1]['text'][$array['answer'][1]['correct']] 
+0

ありがとうございました。私は '$ _POST ['answer'] [$ num] ['correct']'をチェックすると、値が '1'で保存されています。 – superUntitled

+0

@super ?私。 'value =" 0 "'、 'value =" 1 "'などのラジオボタンが1つあります。値は正しい答えの番号でなければなりません。チェックされていません "。 – deceze

+0

私は異なる値を使用していません。インターフェースは回答の並べ替えを可能にするので、正しいラジオボタンの値を設定することは必ずしも正しいとは限りません。これを手伝ってくれてありがとう。私は数週間この答えを整理しようとしています。 – superUntitled

0

でしたあなたは単純に、正しい答えをその値として持つ隠しフォームフィールドを作成せず、次にaの値が選択されたラジオボタンはその隠された入力値と等しいか?例えば

<form> 
    <input type="hidden" name="correct_answer" value="1" /> 
    <input type="radio" name="answer[1]" value="1" /> #1 
    <input type="radio" name="answer[1]" value="2" /> #2 
    <input type="submit" value="submit" /> 
</form> 

私はそれがあなたの問題を解決するだろうと思っています。ラジオボタンの値を隠しフォームフィールドの値と照合する必要があります。彼らが同じなら、それは正しいです。それ以外は間違っています。

希望に役立ちます。