2017-01-14 4 views
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

Таким образом, у вас есть выбор, который хранится в массиве, это хорошо. Однако у вас также есть правильный индикатор, который хранится в массиве. Вы не нуждаетесь в этом в массиве, поскольку есть только один правильный выбор.

Так что измените свой correct[] на correct и установите значение поэтапно для каждого выбора.

Ex:

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

Отлично! Спасибо. –