2012-03-18 20 views
2

は私のデータベースにこのテーブルを考える:私は、個々の質問とページのそれぞれにそのオプションを表示するPAGINATIONを使ってクイズを作成していPHPを使用して、各ページの選択したラジオボタンをデータベースに保存する方法は?

|AnswerID|QuestionID|AnswerText| 
|21  |2   |User  | 
|22  |2   |Admin  | 
|23  |2   |Guest  | 
|24  |2   |User2  | 

。コード例は次のとおりです。

$questionID=0; 
while ($list = mysql_fetch_assoc($result)) 
{ 
echo $list['QuestionID'] . ":" . $list['QuestionText'] . "<br/>"; 
$questionID=$list['QuestionID']; 
} 
$optionsquery="SELECT AnswerText,AnswerID FROM Options Where QuestionID=".$questionID; 
$optionsresult=mysql_query($optionsquery) or die ('Query failed:'. mysql_error()); 
while($row = mysql_fetch_array($optionsresult)) 
{ 
echo "<br>"; 
echo "<input type='radio' id='radio-" . $row["QuestionID"] . "-" 
     . $row["AnswerID"] . "' name='" . $row["QuestionID"] 
     . "' value='" . $row["AnswerID"] . "' /> 
     <label for='radio-" . $row["QuestionID"] . "-" . $row["AnswerID"] . "'>" 
     . $row["AnswerText"] ."</label><br/>"; 
     echo "<br>"; 
} 

ここは私の目的です。

上記に示したように
|StudentID|QuestionID(e.g: 1)|QuestionID(e.g: 2)| 
|678D  |AnswerID(e.g: 11) |AnswerID(e.g: 22) | 
|681D  |AnswerID(e.g: 14) |AnswerID(e.g: 23) | 

、私はハードコーディングないです:私は、次の形式の私のデータベーステーブルにユーザーが選択した選択したラジオを保存したい> AnswerText、 - を考えると、この関係は< AnswerID各ページの質問とオプションは、テーブルのデータベースから取得されます。すべてのコードは1つのPHPファイルでのみ記述されています。私は(PHP上で)グーグルを行ったが、私は自分の目的を達成する方法について混乱している。私はアイデアを失っているので、任意のコード(PHP)スニペットが役立ちます。前もって感謝します。

答えて

1

私はあなたがそのようにそれを保存しないことをお勧め(つまり、列ごとに一つの質問)....あなたはstudentquestionanswerリンクテーブル作成方が良いでしょう:

Student question  answer 
678D  1   11 
678D  2   22 
681D  1   14 
681D  2   23 

これを柔軟性が向上します。たとえば、質問の数を簡単に増やすことができます。簡単に私はこれにHTML出力を変更します送信されたフォームを処理するようにするに

echo "<input type='radio' id='question[" . $row["QuestionID"] . "]' name='question[" . 
$row["QuestionID"] ."]' value='" . $row["AnswerID"] . "' />"; 

これは次のように提出されたときにそれらを処理するマーンう配列として入力を生成します:

$questions = $_POST['question']; // this returns an array like questions[questionid] 
foreach ($questions as $qid => $aid) { 
    $query = 'INSERT INTO answertable(student,question,answer) VALUES 
       ($sudentid,$qid,$aid)'; 
} 

回答を記録するために使用しているテーブルの名前にanswertableを変更する必要があります。そして$student(あなたがそれを保存しているところイムthatsの推測)、現在のセッションから得られるであろう

+0

は、どのように私はこのちょっとページネーション環境の中で

タグ(提出)ボタンを整理する必要がありますか?データベースに挿入する前に、別のページで選択した回答の出力を確認する方法はありますか?あなたの助けてくれてありがとうございました。私は新しいことを学んでいます:) – Derek

+0

@Derek '

'タグを使うことができますが、結果テーブルはあなたの質問に対する回答を追跡します。答えを表示するには、 'insert'クエリに追加する代わりに' echo 'を使って出力してください。 – ManseUK

+0

こんにちは、次のような方法を実装しようとしましたが、各ページで選択した値の値を取得できません。あるページから別のページにナビゲートすると、各質問の選択された値は保存されません。何が間違っているかアドバイスできますか?エコー ""; $ _ SESSION ['questions'] = $ _ POST ['question'];session_start(); $ _セッション['questions'] = $ _ POST ['question']; echo "」; echo $ _SESSION ['questions']; – Derek

関連する問題