Привожу алгоритм, который Вам потребуется уже преобразовать в PHP+MySQL :

Как сделать тестирование на сайте

Привожу алгоритм, который Вам потребуется уже преобразовать в PHP+MySQL:

  1. Создать таблицу с тестами. Здесь достаточно следующих полей: id (уникальный идентификатор), title (название теста), description (описание теста). Можете также добавить количество прошедших данный тест и средний балл. Здесь всё элементарно, и Вы должны справиться с этим без проблем.
  2. Создать таблицу с вопросами. Здесь нужны следующие поля: id (уникальный идентификатор), test_id (id теста, к которому принадлежит данный вопрос), title (текст вопроса), variant_1 (текст варианта 1), variant_2 (текст варианта 2), correct (правильный ответ). Здесь Вы можете указывать любое количество вариантов, в данном случае, я поставил 2 варианта. В поле "correct" должно стоять число с правильным ответом, например, "1".
  3. При запуске теста необходимо записать в сессию id тех вопросов, на которые будет отвечать пользователь. Для этого извлеките из базы любое количество вопросов (например, 10 случайных вопросов для выбранного теста) и запишите их id в сессию пользователя. Здесь Вам необходимо записать в сессию массив, где ключами будут id вопросов, а в значении по умолчанию пустая строка. А в будущем будет идти тот ответ, который дал пользователь.
  4. Вывести первый вопрос из массива, который не имеет ответа (то есть значение равно пустой строке).
  5. Принять от пользователя ответ и записать в массив с ключом в виде id данного вопроса, ответ, который прислал пользователь.
  6. Сделать редирект обратно на страницу с вопросами.
  7. Вернуться к пункту 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; // Записываем в сессию ответ на данный вопрос
?>

Самую суть я разобрал, а уже дальше постарайтесь этот алгоритм применить на практике самостоятельно. Ведь не секрет, что придумать алгоритм гораздо тяжелее, чем его реализовать, и Вам нужно лишь его реализовать, а это не так сложно. Не спорю, алгоритм весьма сложный, но я предупредил вначале статьи, что она не для новичков. И несмотря на то, что алгоритм сложный, в реальности он ещё сложнее может быть, если начать добавлять различные "навороты", например, разбор вопросов в конце, а также каждый раз перемешивать варианты ответов при выводе вопроса.