Показать сообщение отдельно
  #1 (permalink)  
Старый 01.10.2017, 22:36
Профессор
Отправить личное сообщение для DivMan Посмотреть профиль Найти все сообщения от DivMan
 
Регистрация: 08.03.2016
Сообщений: 429

Оцените код тестов.
Сделал тесты, без БД и файлов и ответов нету в браузере.

Попытался сделать структуру массива, приближённую к структуре БД.

Оцените пожалуйста.

Задача:

Дан массив с вопросами и правильными ответами. Пользователь должен выбрать один и вариантов. Когда вопросы заканчиваются - он жмет на кнопку, страница обновляется и вместо вариантов под вопросами появляется сообщение вида: 'ваш ответ: ... верно!' или 'ваш ответ: ... неверно! Правильный ответ: ...'. Правильно отвеченные вопросы должны гореть зеленым цветом, а неправильно - красным.

В массив можно сколько угодно засунуть тестов и в сам код обработки, лезть не придётся.


$questions = [
    1 => [
        'question' => 'Сколько будет 2+2?',
        'variants' => ['2', '4', '6'],
        'answer' => '1'
           
    ],
   
    2 => [
        'question' => 'Сколько будет 5+5?',
        'variants' => ['10', '55', '25'],
        'answer' => '0'
           
    ],
   
    3 => [
        'question' => 'Зимой и летом, одним цветом?',
        'variants' => ['Крокодил', 'трава'],
        'answer' => '0'
    ]
];
 
 
if(empty($_GET['proverka'])) {
    echo '<form action="" method="get">';
    $i = 1;
    foreach($questions as $num) {
        foreach($num as $dano => $v) {
       
                if(gettype($v) == 'array') {
                $j = 0;
                foreach($v as $val) {
                    echo '<label>'.$val.'<input type="radio" name="'.$i.'" value="'.$j.'"></label>&nbsp;&nbsp;&nbsp;';
                    $j++;
                }
            }
            echo '<br>';
           
            if($dano == 'question') {
                echo $v . '<br>';
            }
        }
        $i++;
    }
    echo '<br>';
    echo '<input type="submit" name="proverka" value="Проверить">';
    echo '</form>';
}
 
 
if(!empty($_GET['proverka'])) {
    if(count($_GET)-1 < count($questions)) {
        echo 'Ответьте на все вопросы.';
    }
    else {
        $k = 1;
   
        foreach($questions as $num) {
            foreach($num as $dano => $v) {
                if($dano == 'answer') {
                    if($_GET[$k] == $v) {
                        echo $questions[$k]['question'] .'<br> <span style="color: green; font-weight: bold;">Ваш ответ '.$questions[$k]['variants'][$_GET[$k]].' - правильно</span><br><br>';
                    }
                    else {
                        echo $questions[$k]['question'] .'<br><span style="color: red; font-weight: bold;">Ваш ответ '.$questions[$k]['variants'][$_GET[$k]].' - неправильно, правильный ответ: '.$questions[$k]['variants'][$questions[$k]['answer']].'</span><br><br>';
                           
                    }
                }
            }
            $k++;
        }
    }      
}
Ответить с цитированием