Тестирование на php mysql

Тестирование на php mysql

БлогNot. Пишем простой тест на PHP

Пишем простой тест на PHP

Этот учебный скрипт на PHP показывает, как можно описать некий тест в виде единственного массива вопросов и ответов. Поскольку типов вопросов может быть несколько (выбор "да"-"нет", выбор одного из нескольких вариантов, ввод числа или строки в качестве ответа), нам понадобится не просто массив, а массив массивов, каждый элемент которого будет описывать всё, что нужно для вывода и проверки очередного вопроса. Это будут записи со следующими ключами:

  • ‘q’ — отображаемый текст вопроса;
  • ‘t’ — тип вопроса, соответствующий нужному тегу HTML: ‘checkbox’ для галочек "да/нет", ‘text’ для строки или числа в качестве ответа, ‘select’ — для списка, в котором нужно выбрать одно значение из нескольких. Выбор более одного значения реализуем придуманным нами элементом ‘multiselect’ , представляющим из собой группу вместе обрабатываемых checkbox’ов. На самом деле, стандартный список с атрибутом multiple тоже позволяет решить эту задачу, но не хотелось бы загружать пользователя необходимостью помнить, что множественный выбор из списка делается при зажатой клавише Ctrl;
  • ‘a’ — правильный ответ, для checkbox это значение ‘1’ или ‘0’ (нужно ли включать галочку), для text — строка с ответом (длину поля будем генерировать равной длине строки с правильным ответом, так что контроль лишних разделителей и проч. опустим), для select — номер варианта в списке, который является правильным ответом (варианты нумеруются с нуля!), для multiselect — строка из единиц и нулей, разделённых символом " | ", показывающая, какие по порядку чекбоксы нужно включить, а какие не нужно;
  • ‘i’ — элементы списка, нужные только для типов вопроса select и multiselect , значение содержит строки, разделённые символом " | " (элементы списка или варианты утверждений).

За каждый правильный ответ, в том числе, выбор всех "правильных" чекбоксов в ‘multiselect’, будет начисляться 1 балл, а в конце скрипт выдаст резюме о количестве и проценте правильных ответов.

В отличие от простого конвертера, в этом скрипте мы не ставили задачи сохранить пользовательский ввод, поэтому ссылка "Ещё раз!" на странице с результатами позволяет просто пройти тест повторно, введя все результаты и отметив все чекбоксы заново. Несмотря на это, программке понадобилось 2 дополнительных функции:

  • error_check проверяет, всё ли хорошо с очередным элементом массива $test , и, если что-то не так, завершает выполнение скрипта. Это может пригодиться при отладке;
  • strlwr_ переводит в нижний регистр строки, введённые пользователем в качестве ответов. Предполагается кодировка Windows-1251, но можно, конечно, вставить текст скрипта в файл с другой кодировкой и поменять мета-тег кодировки в заголовке.

Вот полный исходник приложения, содержащий тест всех 4 типов вопросов:

Ниже показан вид теста и результат его прохождения.

Скрипт-пример в работе

В сегодняшней статье собираюсь поведать, как сделать тестирование на сайте. Данное тестирование будет аналогично тому, которое имеется на данном сайте, правда, в упрощённом виде. Сразу говорю, если Ваши знания по 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, если ещё остались вопросы без ответа. Если на все вопросы были даны ответы, то проверить массив в сессии на соответствие правильным ответам, и вывести окончательный результат.
Читайте также:  Как настроить виндовс 10 под игры

Давайте разберём 3-й пункт с кодом:

Теперь давайте разберём 5-й пункт, так как он тоже является, возможно, не совсем понятным:

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

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Она выглядит вот так:

  • BB-код ссылки для форумов (например, можете поставить её в подписи):
  • Комментарии ( 25 ):

    Добавьте результат этого скрипка с рисунком??

    Результат здесь: http://myrusakov.ru/tests.html В любой тест заходите вот и будет результат, за вычетом того, что в конце данного скрипта нет разбора вопросов.

    Читайте также:  Смартфон asus zenfone max plus m1 отзывы

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

    Ничего себе длииииинющая статья. Это рекорд. Прим. — не в обиду автору а просто хочется чтобы темы пошире раскрывались а не абстрактно

    Здесь люди учатся, а не занимаются копипастом. Если Вам нужен готовый скрипт, то я, помнится, написал в статье, что нужно делать в этом случае. А если Вы пришли сюда учиться, то, будьте любезны, додумайте задачу сами.

    Михаил, разве тут $_SESSION["questions"][$question_id"] не должна быть кавычка перед $question_id ?

    Михаил скажите пожалуйста как мне вытащить все вопросы по определенной теме допустим где test_id=3

    Уважаемый Андрей,id каждого вопроса теста не должны повторяться. Можно сделать категорию,занести в неё нужные вам тесты,задать ей id,например,3 и при помощи запроса вытащить все данные из неё.

    Уважаемый Александр Альт если Вам не сложно помогите мне пожалуйста я php знаю на среднем уровне до темы регулярные выражения (учусь по курсу Михаила)но мне срочно нужно сделать тестирование поможете сопровождая меня советами?

    Буду стараться Вот смотрите,у вас есть айди теста: — 3 в таблице с вопросами у каждого вопроса из этого теста,должен стоять идентификатор 3 в колонке test_id У Михаила разобран вывод по одному вопросу при помощи массива и так по действиям,что,в принципе и актуально для теста. Cуть примерно такая. Подключаетесь к базе данных при помощи php. Думаю у Михаила этот вопрос разобран в курсах,так что вдаваться в подробности не буду. После этого создаёте запрос к таблице и выводите данные из неё при помощи массива: $row = mysql_fetch_array(mysql_query("SELECT * FROM таблица WHERE test_id=`3`",$имя переменной,где задан коннект к базе данных); потом выводите результат при помощи команды echo, включив нужные вам данные в вывод. echo $row[‘title’]; Выведет название вопроса) Ну,можно вывести название,далее варианты ответов и т.д. Это как обычный вывод массива

    все понял кроме этого момента Вот смотрите,у вас есть айди теста: — 3 в таблице с вопросами у каждого вопроса из этого теста,должен стоять идентификатор 3 в колонке test_id на данный момент я создал отдельную базу kontrol и в ней две таблицы testi с полями id и title(тема тестов) и таблицу vopros с полями id id_test title_vopros(Текст вопроса) variant_1 variant_2 variant_3 variant_4 и поле correct это чтобы Вы видели ситуацию изнутри теперь вопрос как подставить эти данные в форму (тоесть заголовок варианты и т.д) обе таблицы я заполнил по одной записи в нужных полях

    Ну вот. Вытаскиваете этим запросом: $row = mysqli_fetch_array(mysqli_query("SELECT * FROM таблица WHERE test_id=`3`",$имя переменной,где задан коннект к базе данных); все данные из таблицы,у которых параметр test_id = 3 mysqli_fetch_array — этим вы добавили все данные из всех колонок,test_id которых равен 3,в массив =) Ну вот,а теперь выводите,создавая внешний вид теста например:echo $row[‘title_vopros’]; — текст вопроса. Следующей строчкой: echo $row[‘variant_1’]; — выведет первый вариант ответа и так далее,формируя тело отображения теста Про привязку к форме отпишу чуть позже.

    на данный момент я вывел из базы тему теста вопрос теста и варианты ответа вот файл testing.php а вот файл select_testing.php

    Читайте также:  Simcity города будущего моды

    Здравствуйте Андрей. Пустое поле в таблице не как не повлияет на работу в целом. Чтобы выводился следующий вопрос из таблицы читайте внимательно пункты 2-7 и делайте по аналогии.

    Здравствуйте а можно как то обойтись без сессий? я их еще не изучал а тупо копировать я не хочу так как потом сам же не разберусь в коде в случае чего

    Андрей, в сессиях нет ничего страшного, изучайте их так как они очень важные. Сделать это без сессий, Вам будет не возможно.

    Скажите как сделать так чтобы при нажатии следующий вопрос выводился следуший вопрос? если можно пример пожалуйста

    Лучше реализовать одной кнопкой "Ответ" и после ее нажатия, пользователю автоматически подается следующий вопрос. Реализовать можно множеством способов, зависит от того, как у Вас работает система, можно AJAX’ом допустим.

    нет аякс не использую можно как то по другому ? я слышал get запросом как то можно\подскажите код

    пример из двух файлов, форма отправки находится в файле form.php, а обработчик в файле add.php. Файлы Вы можете конечно называть как вам угодно, лишь придерживаясь правильности именования файлов и правильно указывайте путь к обработчику. Создайте form.php и добавьте следующий код: Затем, создайте add.php и в него добавьте следующее: Затем, запустите form.php и увидите результат работы передачи данных методом GET.

    у меня все получилось но все вопросы выводятся на одной странице как это исправить?

    Не секрет, что работа программиста высоко оплачивается. Но конкуренция за вакантные места высокая. Особенно ценны работники с уже готовым опытом, который они могут подтвердить.

    PHP онлайн тесты оценивают знания кандидатов программирования на языке PHP и их возможности использовать широко используемые в этом языке возможности.

    Тест по PHP — это идеальная оценка для скрининга до работы. Хороший PHP-разработчик должен иметь возможность не только решать проблемы с использованием PHP в качестве языка программирования, но и точно понимать, когда и в каких случаях использовать его богатый набор встроенных функций и других возможностей языка.

    PHP тесты помогают в том, чтобы кандидаты могли решать проблемы с программирование на PHP и находить и исправлять ошибки в веб-приложениях. Также PHP тесты систематизируют знания, позволяют писать осмысленный и правильный код, который затем смогут править другие разработчики.

    Если программист хочет устроиться на работу по специальности, прохождение тестирования станет его преимуществом среди других кандидатов на должность.

    Хотя язык PHP нельзя назвать сложным, всё-таки он требует понимания многих нюансов работы с ним, освоения функционирования классов, фреймворков.

    Также PHP тестирование поможет оценить реальный уровень знаний программиста. Наличие в портфеле соискателя нового места работы успешно пройденных тестов значительно упростит прохождение собеседования, а HR менеджер сможет понять, что перед ним находится специалист, который готов постоянно совершенствовать свои навыки кодинга.

    На собеседованиях часто задают вопросы про знания и понимание объектно-ориентированного программирования, наследования интерфейсов, абстрактных классов, что позволят с высокой точностью выявить опыт соискателя.

    Поэтому прохождение PHP тестирования поможет в решении многих вопросов и придаст дополнительную уверенность кандидату при прохождении собеседования.

    Ссылка на основную публикацию
    Тарол волкова от тараканов отзывы
    ЗДОРОВЬЕ И КРАСОТА ИЗ СИБИРИ Препарат нового поколения, обеспечивающий 100% эффект против тараканов и совершенно безопасный для человека и животных....
    Статическая и динамическая озу
    Оперативная память (Random Access Memory – RAM), т.е. память с произвольным доступом, используется центральным процессором для совместного хранения данных и...
    Статусы сообщений в whatsapp
    Cтатусы показывают, используют ли ваши контакты WhatsApp в настоящий момент или то время, когда они были онлайн в последний раз....
    Тачки для gta sa
    В этом разделе сайта вы можете скачать машины для GTA San Andreas. Пользователи очень любят скачивать моды машин именно с...
    Adblock detector