2017-01-14 26 views
1

私はオンライン試験のWebサイトで作業しています。ラジオボタンの値が選択されていない場合は、

私はその選択肢で質問を定義したいときは、正しい選択肢を選択する必要があります。各選択肢の前にラジオボタンがあり、それを選択すると正しい選択になります。

ラジオボタンの1つを選択すると値が1になり、そうでない場合は値が '0'になるので、foreachを使用してデータベースに保存できます。それは私の問題です。

選択肢の数が明確ではなく(2以上)、動的に追加できるため、特定の値を設定することはできません。

私はissetとforeachを使用しましたが、私はそれらを正しい方法で使用しなかったと思います。 私はそれがjavascriptまたはjqueryで行うことができると思うが、私は方法を知らない。

choice 1: 
<textarea class="form-control" name="choice[]" placeholder="choice text"></textarea> 
<label><input type="radio" name="correct[]">Correct</label> 

choice 2: 
<textarea class="form-control" name="choice[]" placeholder="choice text"></textarea> 
<label><input type="radio" name="correct[]">Correct</label> 

Other Choices ... 



<?php 
foreach ($_POST['choice'] as $key => $value){ 
if (!empty($value)){ 
    foreach ($_POST['correct'] as $value2){ 
    if (isset($value2)) $choice_answer = '1'; else $choice_answer = '0';} 

mysqli_query($server,"INSERT INTO question_choices (question_id,exam_id,choice,answer) VALUES ('$question_id','$current_exam_id','$value','$choice_answer')");}} 
?> 

答えて

0

あなたの選択肢は配列に格納されているので、これは良いことです。ただし、正しいインジケータが配列に格納されている必要があります。正しい選択肢が1つしかないので、配列でそれを必要としません。

correct[]をちょうどcorrectに変更し、すべての選択肢に対して値を段階的に設定してください。

例:

choice 1: 
<textarea class="form-control" name="choice[]" placeholder="choice text"></textarea> 
<label><input type="radio" name="correct" value=0>Correct</label> 

choice 2: 
<textarea class="form-control" name="choice[]" placeholder="choice text"></textarea> 
<label><input type="radio" name="correct" value=1>Correct</label> 

choice 3: 
<textarea class="form-control" name="choice[]" placeholder="choice text"></textarea> 
<label><input type="radio" name="correct" value=2>Correct</label> 

のみ選択したラジオボタンが掲載されますので、$_POST['correct']$_POST['choice']アレイ内で正しい答えのインデックスが含まれています。

foreach ($_POST['choice'] as $i => $choice) { 
    if (!empty($choice)) { 

     if($_POST['correct'] == $i){ 
      $choice_answer = 1; 
     } else { 
      $choice_answer = 0; 
     } 

     mysqli_query($server, "INSERT INTO question_choices (question_id,exam_id,choice,answer) VALUES ('$question_id','$current_exam_id','$value','$choice_answer')"); 
    } 
} 
+0

グレート:

次に、あなたがこのデータベースに送信する前に、それに応じて値を設定するような何かを行うことができます!ありがとうございました。 –

関連する問題