Привожу алгоритм, который Вам потребуется уже преобразовать в PHP+MySQL :
Привожу алгоритм, который Вам потребуется уже преобразовать в PHP+MySQL:
- Создать таблицу с тестами. Здесь достаточно следующих полей: id (уникальный идентификатор), title (название теста), description (описание теста). Можете также добавить количество прошедших данный тест и средний балл. Здесь всё элементарно, и Вы должны справиться с этим без проблем.
- Создать таблицу с вопросами. Здесь нужны следующие поля: id (уникальный идентификатор), test_id (id теста, к которому принадлежит данный вопрос), title (текст вопроса), variant_1 (текст варианта 1), variant_2 (текст варианта 2), correct (правильный ответ). Здесь Вы можете указывать любое количество вариантов, в данном случае, я поставил 2 варианта. В поле "correct" должно стоять число с правильным ответом, например, "1".
- При запуске теста необходимо записать в сессию id тех вопросов, на которые будет отвечать пользователь. Для этого извлеките из базы любое количество вопросов (например, 10 случайных вопросов для выбранного теста) и запишите их id в сессию пользователя. Здесь Вам необходимо записать в сессию массив, где ключами будут id вопросов, а в значении по умолчанию пустая строка. А в будущем будет идти тот ответ, который дал пользователь.
- Вывести первый вопрос из массива, который не имеет ответа (то есть значение равно пустой строке).
- Принять от пользователя ответ и записать в массив с ключом в виде id данного вопроса, ответ, который прислал пользователь.
- Сделать редирект обратно на страницу с вопросами.
- Вернуться к пункту 4, если ещё остались вопросы без ответа. Если на все вопросы были даны ответы, то проверить массив в сессии на соответствие правильным ответам, и вывести окончательный результат.
Давайте разберём 3-й пункт с кодом:
<?php
$arr = array(5, 15, 1, 10, 2); // 5 id вопросов, которые извлекаются из базы
for ($i = 0; $i < count($arr); $i++) {
$arr_questions[$arr[$i]] = "";
}
$_SESSION["questions"] = $arr_questions;
?>
Теперь давайте разберём 5-й пункт, так как он тоже является, возможно, не совсем понятным:
<?php
$question_id = 5; // id вопроса, на который пользователь дал ответ (приходит из формы)
$answer = 1; // ответ, который дал пользователь (приходит из формы)
$_SESSION["questions"]["$question_id"] = $answer; // Записываем в сессию ответ на данный вопрос
?>
Самую суть я разобрал, а уже дальше постарайтесь этот алгоритм применить на практике самостоятельно. Ведь не секрет, что придумать алгоритм гораздо тяжелее, чем его реализовать, и Вам нужно лишь его реализовать, а это не так сложно. Не спорю, алгоритм весьма сложный, но я предупредил вначале статьи, что она не для новичков. И несмотря на то, что алгоритм сложный, в реальности он ещё сложнее может быть, если начать добавлять различные "навороты", например, разбор вопросов в конце, а также каждый раз перемешивать варианты ответов при выводе вопроса.
